Maison > Questions et réponses > le corps du texte
Permettez-moi d'abord de mentionner que j'ai examiné 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 à l'utilisateur root MySQL en utilisant la commande suivante :
mysql -u root -p
Puis j'ai créé une nouvelle facture utilisateur avec % hôte
CREATE USER 'bill'@'%' IDENTIFIED BY 'passpass';
Accorder toutes les autorisations à la facture utilisateur :
grant all privileges on *.* to 'bill'@'%' with grant option;
Ensuite, je me suis déconnecté en tant qu'utilisateur root et j'ai essayé de me connecter en utilisant l'utilisateur de facturation :
mysql -u bill -p
Après avoir saisi le mot de passe correct, l'erreur suivante apparaît :
Erreur 1045 (28000) : Accès refusé pour l'utilisateur "bill"@"localhost" (en utilisant le mot de passe : OUI)
P粉1869047312023-09-18 07:57:18
Essayez :
~$ mysql -u root -p 输入密码: mysql> grant all privileges on *.* to bill@localhost identified by 'pass' with grant option;
P粉2873452512023-09-18 00:36:21
Vous pouvez avoir un utilisateur anonyme''@'localhost'
或''@'127.0.0.1'
.
Selon le Manuel :
Par conséquent, un tel utilisateur anonyme "bloquera" tout autre utilisateur comme '[any_username]'@'%'
在从localhost
lorsqu'il est connecté.
'bill'@'localhost'
匹配'bill'@'%'
,但会在之前匹配(例如)''@'localhost'
.
La solution recommandée est de supprimer cet utilisateur anonyme (c'est généralement une bonne idée).
Les modifications ci-dessous ne sont pour la plupart pas pertinentes par rapport à la question principale. Il s'agit simplement de répondre à certaines des questions posées dans d'autres commentaires de ce fil.
Modifier 1
Authentifiez-vous avec 'bill'@'%'
via socket.
root@myhost:/home/mysql-5.5.16-linux2.6-x86_64# ./mysql -ubill -ppass --socket=/tmp/mysql-5.5.sock 欢迎使用 MySQL monitor(...) mysql> SELECT user, host FROM mysql.user; +------+-----------+ | user | host | +------+-----------+ | bill | % | | root | 127.0.0.1 | | root | ::1 | | root | localhost | +------+-----------+ 共有 4 行(0.00 秒) mysql> SELECT USER(), CURRENT_USER(); +----------------+----------------+ | USER() | CURRENT_USER() | +----------------+----------------+ | bill@localhost | bill@% | +----------------+----------------+ 共有 1 行(0.02 秒) mysql> SHOW VARIABLES LIKE 'skip_networking'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | skip_networking | ON | +-----------------+-------+ 共有 1 行(0.00 秒)
Edit 2
Exactement la même configuration, sauf que j'ai réactivé le réseau et créé maintenant un utilisateur anonyme''@'localhost'
.
root@myhost:/home/mysql-5.5.16-linux2.6-x86_64# ./mysql 欢迎使用 MySQL monitor(...) mysql> CREATE USER ''@'localhost' IDENTIFIED BY 'anotherpass'; 查询 OK,0 行受影响(0.00 秒) mysql> Bye root@myhost:/home/mysql-5.5.16-linux2.6-x86_64# ./mysql -ubill -ppass \ --socket=/tmp/mysql-5.5.sock ERROR 1045 (28000): Access denied for user 'bill'@'localhost' (using password: YES) root@myhost:/home/mysql-5.5.16-linux2.6-x86_64# ./mysql -ubill -ppass \ -h127.0.0.1 --protocol=TCP ERROR 1045 (28000): Access denied for user 'bill'@'localhost' (using password: YES) root@myhost:/home/mysql-5.5.16-linux2.6-x86_64# ./mysql -ubill -ppass \ -hlocalhost --protocol=TCP ERROR 1045 (28000): Access denied for user 'bill'@'localhost' (using password: YES)
Edit 3
Même situation que dans l'édition 2, fournissant désormais un mot de passe pour l'utilisateur anonyme.
root@myhost:/home/mysql-5.5.16-linux2.6-x86_64# ./mysql -ubill -panotherpass -hlocalhost 欢迎使用 MySQL monitor(...) mysql> SELECT USER(), CURRENT_USER(); +----------------+----------------+ | USER() | CURRENT_USER() | +----------------+----------------+ | bill@localhost | @localhost | +----------------+----------------+ 共有 1 行(0.01 秒)
Conclusion 1, de l'édition 1 : L'authentification 'bill'@'%'
est possible via des sockets.
Conclusion 2, de l'édition 2 : que la connexion via TCP ou via des sockets n'ait aucun impact sur le processus d'authentification (à part ne pas pouvoir se connecter via des sockets à un autre utilisateur que 'something'@'localhost'
).
Conclusion 3, de l'édition 3 : Même si j'ai spécifié -ubill
, j'ai obtenu l'accès en tant qu'utilisateur anonyme. Cela est dû aux « règles de commande » suggérées ci-dessus. Veuillez noter que sur la plupart des installations par défaut, il existe un utilisateur anonymesans mot de passe (qui doit être sécurisé/supprimé).