Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Acesso negado para o usuário 'www-data'@'localhost - como lidar com isso?


www-data é o usuário Debian que executa o apache e o php. Se você tentar uma consulta quando não tiver uma conexão válida, o php/mysql tentará criar uma conexão usando <unix-user>@localhost sem senha. É aqui que [email protected] (using password:NO) está vindo.

A razão mais provável de que isso começou a acontecer agora (embora esteja funcionando bem por 2 anos antes) é que sua carga de banco de dados aumentou a ponto de algumas conexões não conseguirem ter sucesso (provavelmente devido a max_connections ou max_user_connections; embora isso também pode resultar de outros limites, como memória, threads, etc.). Quando isso acontece, sua chamada para mysql_connect emitirá uma mensagem de erro e retornará FALSE . Se você não detectar esta falha, sua próxima chamada mysql (provavelmente mysql_query ou mysql_select_db) tentará a conexão com [email protected] -- causando assim o problema que você está vendo.

Sugiro ativar o relatório de erros e a exibição de erros (conforme sugerido por @DarkMantis):
ini_set('error_reporting', E_ALL|E_STRICT);
ini_set('display_errors', 1);

Além disso, certifique-se de que sua chamada para mysql_connect não precedido por um @ sinal; e certifique-se de verificar o valor de retorno. Deve ser algo assim:
$cxn = mysql_connect('localhost','yourusername','yourpassword');
if( $cxn === FALSE ) {  die('mysql connection error: '.mysql_error()); }