Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Zugriff für Benutzer 'www-data'@'localhost verweigert - wie geht man damit um?

www-data ist der Debian-Benutzer, der Apache und PHP ausführt. Wenn Sie eine Abfrage ohne gültige Verbindung versuchen, versucht php/mysql, eine Verbindung mit <unix-user>@localhost herzustellen ohne Passwort. Hier ist [email protected] (using password:NO) kommt aus.

Der wahrscheinlichste Grund dafür, dass dies jetzt passiert (obwohl es vor 2 Jahren problemlos lief), ist, dass Ihre Datenbanklast so weit angestiegen ist, dass einige Verbindungen nicht mehr erfolgreich sein können (wahrscheinlich aufgrund von max_connections oder max_user_connections). dies kann auch aus anderen Einschränkungen wie Speicher, Threads usw. resultieren). In diesem Fall wird Ihr Aufruf von mysql_connect gibt eine Fehlermeldung aus und gibt FALSE zurück . Wenn Sie diesen Fehler nicht erkennen, wird Ihr nächster MySQL-Aufruf (wahrscheinlich mysql_query oder mysql_select_db) versuchen, eine Verbindung zu [email protected] -- wodurch das angezeigte Problem verursacht wird.

Ich schlage vor, die Fehlerberichterstattung und Fehleranzeige zu aktivieren (wie von @DarkMantis vorgeschlagen):

ini_set('error_reporting', E_ALL|E_STRICT);
ini_set('display_errors', 1);

Stellen Sie außerdem sicher, dass Ihr Aufruf von mysql_connect nicht ist vorangestellt ein @ Schild; und überprüfen Sie unbedingt den Rückgabewert. Es sollte etwa so aussehen:

$cxn = mysql_connect('localhost','yourusername','yourpassword');
if( $cxn === FALSE ) {  die('mysql connection error: '.mysql_error()); }