Access denied for user 'www-data'@'localhost - wie damit umgehen?
Ich das Gesicht mit einem seltsamen problem gestern. Ich habe server auf dem Debian mit installiert PHP 4.4.4-8 und die mysql-5.5.9. Dieser server dient eine Reihe von websites.
Aus irgendeinem Grund zufällig bekomme ich den Fehler "Access denied for user 'www-data'@'localhost' (using password: NO)" wenn ich versuche, das laden der Webseite.
Wenn ich auf aktualisieren wird die Seite normal geladen, aber nach einigen Klicks, die Meldung erscheint wieder. Benutzernamen, die diese Seite verwenden, um die Verbindung zum mysql server ist nicht www-data.
Wer hat vor ähnlichen problem ?
- nicht Schwarzseher , aber ich würde wieder bis dein DB-schema .. und alle. Es tun könnten Titten bis ganz bald. Die andere mögliche Gründe könnten sein, die mit dem Netzwerk verbunden, die versagt haben oder Fehler in der Benutzer-Konfiguration.
- using password: NO -- ich Frage mich, was das bedeutet.
- am zweiten Gedanken, ist es eine chance, dass Ihr Skript versucht eine Verbindung zur Datenbank herstellen, ohne username und Passwort? E. g. durch eine
mysql_query()
ohne dabei einmysql_connect($hostname, $username, $password)
? - Benutzername und Passwort sind richtig eingestellt
- Sollten Sie das Passwort überprüfen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
www-data
ist das Debian-user läuft apache und php. Wenn Sie versuchen, eine Abfrage, wenn Sie nicht über eine gültige Verbindung, php/mysql versucht, eine Verbindung mithilfe<unix-user>@localhost
ohne Kennwort. Dies ist, wowww-data@localhost (using password:NO)
kommt.Ist der wahrscheinlichste Grund, dass dieser begonnen hat, jetzt passiert (obwohl es schon läuft gut für 2 Jahre vor) ist, dass Sie Ihre db-Last gestiegen ist bis zu dem Punkt, wo einige verbindungen sind nicht in der Lage, erfolgreich zu sein (wahrscheinlich wegen max_connections, oder max_user_connections; aber dies kann auch die Folge von anderen Grenzen, wie Speicher, threads, etc). Wenn dies geschieht, wird Ihr Anruf zu
mysql_connect
emittieren, eine Fehlermeldung, und zurückFALSE
. Wenn Sie scheitern, zu erkennen, diese scheitern, dann wird Ihr Nächster mysql nennen (wahrscheinlich mysql_query, oder mysql_select_db) wird versucht, die Verbindung zum www-data@localhost -- so verursacht das problem, das Sie sehen.Schlage ich vor, aktivieren die Fehlerberichterstattung und die Fehler-Anzeige (vorgeschlagen von @DarkMantis) :
Auch sicher sein, dass Ihr Aufruf von mysql_connect ist nicht vorangestellt
@
Unterschreiben, und stellen Sie sicher, überprüfen Sie den Rückgabewert. Es sollte in etwa so Aussehen:mysql_connect()
ist das abfangen der Fehler, den Druck dermysql_error()
Nachricht und beenden Sie das Skript (wie oben beschrieben). Diemysql_error()
Nachricht (unmittelbar, nachdemmysql_connect()
scheitert), dann werden die meisten wahrscheinlich sagen Sie genau, was das problem ist. Wenn die Botschaft sagt etwas wie "mysql: max_connections überschritten", dann werden wir wissen, was Los ist.Es klingt wie die Abfrage, die den Fehler verursacht, passiert, wenn etwas bestimmtes bezeichnet wird. Dies könnte bedeuten, dass, wenn die Abfrage aufgerufen wird, Sie sind nicht mit der Datenbank verbunden mit dem richtigen Benutzernamen/Passwort.
Versuchen, um sicherzustellen, dass Sie sind definitiv angeschlossen, verwenden Sie
or die(mysql_error());
am Ende alle Ihre Abfrage Variablen zum Debuggen.Außerdem verwenden Sie die folgenden zwei Zeilen am Anfang Ihrer php-Datei:
Wird zeigen, dass Sie jede kleine php-Fehler, die auftreten können, innerhalb Ihrer Klasse/Datei, die Sie möglicherweise nicht gewählt haben, vor.
Wenn Ihr immer noch ein problem nach diesem, bitte posten Sie Ihre PHP-code und ich werde einen Blick auf Sie direkt.
Dank!
ini_set('error_reporting', E_ALL | E_STRICT);
oder nurini_set('error_reporting', -1);
ich vor dem gleichen problem.
Das problem war in meinem config.php!
Ich veränderte einfach die $dbserver aus
"127.0.0.1" -> "localhost".
Jetzt funktioniert die Verbindung wieder!
Passwort verwenden 'OHNE'
HTML:
Deaktivierung abgesicherten Modus fixen es für mich:
For absent-minded Menschen, dieser Fehler kann passieren, wenn
mysql_query()
aufgerufen wird, nachdemmysqli_connect()
, wenn es sein solltemysqli_query()
.Für dieses problem zu lösen. Ich hatte zum ändern der Verbindung Skript Mit
HTML: