Détails
ERREUR MySQL 1045 (28000) : Accès refusé pour l'utilisateur 'bill'@'localhost' ; (utilisant le mot de passe : YES)
Tout d'abord, permettez-moi de mentionner que j'ai parcouru de nombreuses questions suggérées et que je n'ai trouvé aucune réponse pertinente. Voici ce que je fais.
Je suis connecté à mon instance Amazon EC2. Je peux me connecter à la racine de MySQL avec cette commande :
mysql -u root -p
Puis j'ai créé un nouvel utilisateur bill avec host %.
CREATE USER 'bill'@'%' IDENTIFIED BY 'passpass';
J'ai accordé tous les privilèges à l'utilisateur bill :
grant all privileges on *.* to 'bill'@'%' with grant option;
Ensuite, je quitte l'utilisateur root et j'essaie de me connecter avec bill :
mysql -u bill -p
en entrant le mot de passe correct et j'obtiens cette erreur :
ERROR 1045 (28000) : Accès refusé pour l'utilisateur 'bill'@'localhost' ; (utilisant le mot de passe : YES)
397
3
Quand tu as couru
et que vous avez eu cette erreur
mysqld s'attend à ce que vous vous connectiez en tant que
bill@localhost
.Essayez de créer
bill@localhost
.Si vous voulez vous connecter à distance, vous devez spécifier soit le nom DNS, soit l'IP publique, soit 127.0.0.1 en utilisant TCP/IP :
Une fois que vous vous êtes connecté, veuillez exécuter ceci
[USER()][1] indique comment vous avez tenté de vous authentifier dans MySQL.
[CURRENT_USER()][2] indique comment vous avez été autorisé à vous authentifier dans MySQL à partir de la table mysql.user.
Cela vous donnera une meilleure vue de comment et pourquoi vous avez été autorisé à vous connecter à mysql. Pourquoi est-il important de connaître cette vue ? Elle a trait au protocole d'ordre d'authentification de l'utilisateur.
Voici un exemple : Je vais créer un utilisateur anonyme sur mon bureau MySQL.
OK regardez-moi me connecter en tant qu'utilisateur anonyme :
L'ordre d'authentification est très strict. Il vérifie du plus spécifique au moins spécifique. [J'ai écrit sur ce style d'authentification dans le DBA StackExchange**][3].
N’oubliez pas d’appeler explicitement TCP comme protocole pour le client mysql lorsque cela est nécessaire.
[1] : http://dev.mysql.com/doc/refman/5.5/en/information-functions.html#function_user [2] : http://dev.mysql.com/doc/refman/5.5/en/information-functions.html#function_current-user [3] : https://dba.stackexchange.com/a/10897/877
Lorsque vous tapez
mysql -u root -p
, vous vous connectez au serveur mysql via un socket unix local.Cependant, l'autorisation que vous avez donnée,
'bill'@'%'
ne correspond curieusement qu'aux connexions TCP/IP.Si vous voulez accorder l'accès au socket unix local, vous devez accorder des privilèges à 'bill'@'localhost' ; , ce qui, curieusement, n'est pas la même chose que 'bill'@'127.0.0.1' ;
Vous pouvez également vous connecter en utilisant TCP/IP avec le client de ligne de commande mysql, afin de respecter les privilèges que vous avez déjà accordés, par exemple en exécutant
mysql -u root -p -h 192.168.1.123
ou n'importe quelle adresse IP locale de votre ordinateur.Ok, je ne suis pas sûr mais c'est probablement le fichier my.cnf dans le répertoire d'installation de mysql qui est en cause. Commentez cette ligne et le problème pourrait être résolu.