Maison >base de données >tutoriel mysql >Pourquoi MySQL renvoie-t-il l'erreur 1045 : accès refusé même avec des informations d'identification correctes ?
Erreur MySQL 1045 : accès refusé pour l'utilisateur 'bill'@'localhost' malgré des informations d'identification correctes
Lors de la tentative d'accès à une base de données MySQL distante via la ligne de commande, les utilisateurs peuvent occasionnellement rencontrer le message « Erreur 1045 : Accès refusé pour l'utilisateur 'bill'@'localhost' » message, indiquant que la connexion a été rejetée malgré la fourniture des informations de connexion correctes.
Enquête :
L'utilisateur a créé un nouvel utilisateur nommé « bill », accordé à l'utilisateur tous les privilèges nécessaires, puis quittez le compte utilisateur root. Cependant, les tentatives ultérieures de connexion en tant qu'utilisateur « facture » à partir de la machine locale (« localhost ») entraînent l'erreur.
Cause première :
Souvent, cela le problème survient en raison de la présence d'un utilisateur anonyme (un utilisateur avec un nom d'utilisateur vide et « localhost » comme hôte) dans la table « mysql.user ». Lors de la connexion à partir de « localhost », le serveur donne la priorité aux comptes d'utilisateurs correspondants en fonction du nom d'hôte ou de l'adresse IP le plus spécifique.
Solution 1 : Supprimer l'utilisateur anonyme
Pour résoudre le problème, supprimez l'utilisateur anonyme de la table 'mysql.user' :
DELETE FROM mysql.user WHERE user = '' AND host = 'localhost';
Solution 2 (pour MySQL Versions >= 5.7) :
Si vous utilisez MySQL version 5.7 ou ultérieure, vous pouvez désactiver l'utilisation de comptes anonymes via la variable 'skip_name_resolve' :
SET GLOBAL skip_name_resolve = ON;
Considérations supplémentaires :
Prise Connexions :
Dans l'exemple fourni, l'utilisateur se connecte via une socket. Il est important de s'assurer que les champs « utilisateur » et « mot de passe » sont correctement spécifiés, car tout utilisateur anonyme configuré dans le chemin de connexion peut potentiellement remplacer les informations d'identification fournies.
Connexions TCP :
Lors d'une connexion via TCP, l'indicateur -h doit être utilisé pour spécifier le nom d'hôte ou l'adresse IP, par opposition à localhost :
mysql -u bill -p -hremote_hostname
Noms d'utilisateur vides :
Certaines bibliothèques clientes ne gèrent pas correctement les noms d'utilisateur vides. Au lieu de '', le symbole '@' doit être utilisé pour désigner un utilisateur anonyme :
mysql -u'@'localhost'-ppassword
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!