Maison  >  Questions et réponses  >  le corps du texte

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)

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粉885562567P粉885562567368 Il y a quelques jours588

répondre à tous(2)je répondrai

  • P粉186904731

    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;

    répondre
    0
  • P粉287345251

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

    répondre
    0
  • Annulerrépondre