Impossible d'accéder à MySQL, code d'erreur 1045 (28000) : l'accès est refusé pour l'utilisateur 'bill'@'localhost' (en utilisant le mot de passe : oui)
P粉885562567
P粉885562567 2023-09-17 09:21:55
0
2
584

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粉885562567
P粉885562567

répondre à tous(2)
P粉186904731

Essayez :

~$ mysql -u root -p
输入密码:

mysql> grant all privileges on *.* to bill@localhost identified by 'pass' with grant option;
P粉287345251

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]'@'%'在从localhostlorsqu'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é).

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!