sql >> Base de Datos >  >> RDS >> Mysql

Acceso denegado para el usuario 'www-data'@'localhost:¿cómo lidiar con eso?

www-data es el usuario de Debian que ejecuta apache y php. Si intenta una consulta cuando no tiene una conexión válida, php/mysql intentará crear una conexión usando <unix-user>@localhost sin contraseña Aquí es donde [email protected] (using password:NO) viene.

La razón más probable por la que esto ha comenzado a suceder ahora (aunque ha funcionado bien durante los 2 años anteriores) es que su carga de base de datos ha aumentado hasta el punto en que algunas conexiones no pueden tener éxito (probablemente debido a max_connections o max_user_connections; aunque esto también puede resultar de otros límites como memoria, subprocesos, etc.). Cuando esto sucede, su llamada a mysql_connect emitirá un mensaje de error y devolverá FALSE . Si no detecta esta falla, entonces su próxima llamada mysql (probablemente mysql_query o mysql_select_db) intentará conectarse a [email protected] -- causando así el problema que está viendo.

Sugiero habilitar el informe de errores y la visualización de errores (como lo sugiere @DarkMantis):

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

Además, asegúrese de que su llamada a mysql_connect no precedido por un @ señal; y asegúrese de comprobar el valor de retorno. Debería ser algo como esto:

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