Je suis confronté à un problème étrange hier. J'ai le serveur exécutant Debian avec PHP installé 4.4.4-8 et MySQL 5.5.9. Ce serveur sert plusieurs sites Web. Pour une raison quelconque au hasard, je reçois cette erreur "Accès refusé à l'utilisateur" www-data '@' localhost '(à l'aide du mot de passe: non) "Lorsque j'essaie de charger la page Web. Si je frappe Actualisez la page Charge normalement, mais Afer Plusieurs clics sur ce message apparaissent à nouveau. Nom d'utilisateur que cette page utilise pour se connecter à MySQL Server n'est pas www-Data. P>
Quelqu'un a-t-il fait face à un problème similaire? p>
7 Réponses :
On dirait que la requête qui cause que l'erreur se produit lorsque quelque chose est appelé. Cela pourrait signifier que lorsque la requête est appelée, vous n'êtes pas connecté à la base de données avec le nom d'utilisateur / mot de passe correct.
Essayez de vous assurer que vous êtes définitivement connecté, utilisez En outre, utilisez les deux lignes suivantes en haut de votre fichier PHP: p> ou mourir (mysql_error ()); / Code> à la fin de toutes vos variables de requête pour les déboguer. p> ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
En fait, il devrait être ini_set ('error_reporting', e_all | e_strict); code> ou juste ini_set ('error_reporting', -1); code>
Le code de la page Web n'est pas modifié pendant deux ans. Depuis maintenant, je n'ai pas vu une telle erreur. Merci de m'aider.
En fait, cela fonctionnera à la fois. E_all affichera toujours les erreurs. Mais déposé. Merci.
Dans ce cas, vous ou toute personne a changé l'un des paramètres de la base de données, peut-être modifié un utilisateur ou éventuellement (pas sûr de 100% sur ceci) a-t-il changé d'utilisateur dans le système Debian?
HowToForge.com/forums/archive/index.php/T- 9347.html Ce fil a eu un problème simulaire pour vous, peut-être que cela peut vous aider. Ce site peut également être bénéfique: linuxquestions.org/questions/linux-software-2/... Avez-vous un accès au shell au serveur qu'il fonctionne simplement sur la curiosité?
J'ai déjà googlé. Oui, j'ai accès à Shell et examine maintenant les journaux.
La raison la plus probable que cela a commencé à se produire maintenant (bien qu'il ait été bien fonctionné pendant 2 ans avant ) Est-ce que votre charge de DB a augmenté jusqu'au point où certaines connexions sont incapables de réussir (probablement dues à max_connections, ou max_user_connections; bien que cela puisse également résulter d'autres limites telles que la mémoire, les fils, etc.). Lorsque cela se produit, votre appel à Je suggère. Activation des rapports d'erreur et l'affichage d'erreur (comme suggéré par @darkmantis): p> également, assurez-vous que votre appel à mysql_connect est pas em> précédé de un signe www-data code> est l'utilisateur Debian qui exécute Apache et PHP. Si vous essayez une requête lorsque vous n'avez pas de connexion valide, PHP / MySQL tentera de créer une connexion à l'aide de www-data @ localhost (à l'aide du mot de passe: non) code> vient de. mysql_connect code> émettra un message d'erreur et renvoyer false code>. Si vous ne parviendrez pas à détecter cette défaillance, votre prochain appel MySQL (probablement mysql_Query, ou mysql_select_db) tentera la connexion à www-data @ localhost - entraînant ainsi le problème que vous voyez. P> @ code>; et assurez-vous de vérifier la valeur de retour. Il devrait ressembler à quelque chose comme ceci: p>
Je pense que je reçois la racine du problème. Trop de connections. À quoi? Augmenter ?
Bonne réponse. Beaucoup mieux que le mien xd
@jingo, vous ne devriez pas supposer que le problème provient de trop de connexions. Vous devez vous assurer que votre mysql_connect () code> attrape l'erreur, imprimant le message mysql_error () code> et terminer le script (comme décrit ci-dessus). Le message mysql_error () code> (pris immédiatement après mysql_connect () code> échoue), va probablement vous dire exactement quel est le problème. Si ce message dit quelque chose comme "MySQL: max_connections dépassés", nous saurons ce qui se passe.
Cette réponse m'a beaucoup aidé. J'ai eu une variable d'utilisateur mal saisie, il a donc été traité comme une chaîne vide. L'activation des rapports d'erreur l'a révélé.
J'ai fait face au même problème. Le problème était dans mon config.php! J'ai simplement changé le $ dbserver strong> de "127.0.0.1" -> "localhost". strong> la connexion fonctionne à nouveau! em> p>
Pour résoudre ce problème. J'ai dû changer le script de connexion en utilisant
p>
(MySQLi Object-Oriented)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
// Create connection
$conn = new mysqli($servername, $username, $password);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?> Peut-être que ce n'est pas une solution finale, mais cela a fonctionné pour moi aussi
Utiliser le mot de passe 'NO'
P>
(MySQLi Object-Oriented)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
// Create connection
$conn = new mysqli($servername, $username, $password);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?> Désactiver le mode sans échec corrigé pour moi:
Notice: mysql_connect(): SQL safe mode in effect - ignoring host/user/password information in /var/www/html/test.php on line 4
Pour des personnes absentes, cette erreur peut arriver lorsque mysql_query () code> est appelé après mysqli_connect () code>, quand il devrait être MySQLI_Query () code>. p>
Ne pas être un alarmiste, mais je sauverrais votre db .. Schéma et tout. Cela pourrait faire des seins aussi bientôt. Les autres raisons possibles pourraient être connectées à l'échec du réseau d'une manière ou d'une erreur dans la configuration de l'utilisateur.
Utilisation de mot de passe: Non I> - Je me demande ce que cela signifie.
À la deuxième pensée, votre script est-il une chance que votre script essaie de se connecter à la base de données sans nom d'utilisateur et mot de passe? Par exemple. En faisant un
mysql_query () code> sans effectuer unmysql_connect ($ nom d'hôte, $ nom d'utilisateur, $ mot de passe) code>?Le nom d'utilisateur et le mot de passe sont définis correctement
Vous devriez vérifier le mot de passe.