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 ?

Pourquoi MySQL renvoie-t-il l'erreur 1045 : accès refusé même avec des informations d'identification correctes ?

DDD
Libérer: 2024-12-17 04:28:25
original
818 Les gens l'ont consulté

Why Does MySQL Return Error 1045: Access Denied Even with Correct Credentials?

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';
Copier après la connexion

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;
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal