Mysql
 sql >> Base de données >  >> RDS >> Mysql

Accès refusé pour l'utilisateur 'www-data'@'localhost - comment gérer cela ?

www-data est l'utilisateur Debian qui exécute apache et php. Si vous tentez une requête alors que vous n'avez pas de connexion valide, php/mysql tentera de créer une connexion en utilisant <unix-user>@localhost sans mot de passe. C'est là que [email protected] (using password:NO) vient.

La raison la plus probable pour laquelle cela a commencé à se produire maintenant (bien qu'il ait fonctionné correctement pendant 2 ans auparavant) est que votre charge de base de données a augmenté au point où certaines connexions ne peuvent pas réussir (probablement en raison de max_connections ou max_user_connections; cependant cela peut également résulter d'autres limites comme la mémoire, les threads, etc.). Lorsque cela se produit, votre appel à mysql_connect émettra un message d'erreur et renverra FALSE . Si vous ne parvenez pas à détecter cet échec, alors votre prochain appel mysql (probablement mysql_query, ou mysql_select_db) tentera la connexion à [email protected] -- causant ainsi le problème que vous voyez.

Je suggère d'activer le rapport d'erreur et l'affichage des erreurs (comme suggéré par @DarkMantis) :

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

Assurez-vous également que votre appel à mysql_connect n'est pas précédé d'un @ signe; et assurez-vous de vérifier la valeur de retour. Cela devrait ressembler à ceci :

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