Mysql
 sql >> Database >  >> RDS >> Mysql

Accesso negato per l'utente 'www-data'@'localhost - come gestirlo?

www-data è l'utente Debian che esegue apache e php. Se si tenta una query quando non si dispone di una connessione valida, php/mysql tenterà di creare una connessione utilizzando <unix-user>@localhost senza password. Qui è dove [email protected] (using password:NO) proviene da.

La ragione più probabile per cui questo ha iniziato a succedere ora (sebbene funzioni correttamente da 2 anni prima) è che il carico del tuo db è aumentato al punto in cui alcune connessioni non riescono a funzionare (probabilmente a causa di max_connections o max_user_connections; sebbene questo può anche derivare da altri limiti come memoria, thread, ecc.). Quando ciò accade, chiama mysql_connect emetterà un messaggio di errore e restituirà FALSE . Se non riesci a rilevare questo errore, la tua prossima chiamata mysql (probabilmente mysql_query o mysql_select_db) tenterà la connessione a [email protected] -- causando così il problema che stai vedendo.

Suggerisco di abilitare la segnalazione degli errori e la visualizzazione degli errori (come suggerito da @DarkMantis) :

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

Inoltre, assicurati che la tua chiamata a mysql_connect sia non preceduto da un @ cartello; e assicurati di controllare il valore di ritorno. Dovrebbe assomigliare a questo:

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