suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Zugriff auf MySQL nicht möglich, Fehlercode 1045 (28000): Der Zugriff wird dem Benutzer „bill“@„localhost“ verweigert (mit Passwort: „Ja“)

Zunächst möchte ich erwähnen, dass ich mir viele der vorgeschlagenen Fragen angesehen und keine relevanten Antworten gefunden habe. Folgendes mache ich.

Ich bin mit meiner Amazon EC2-Instanz verbunden. Ich kann mich mit dem folgenden Befehl beim MySQL-Root-Benutzer anmelden:

mysql -u root -p

Dann habe ich eine neue Benutzerrechnung mit Gastgeber % erstellt

CREATE USER 'bill'@'%' IDENTIFIED BY 'passpass';

Gewähren Sie der Benutzerrechnung alle Berechtigungen:

grant all privileges on *.* to 'bill'@'%' with grant option;

Dann habe ich mich als Root-Benutzer abgemeldet und versucht, mich mit dem Rechnungsbenutzer anzumelden:

mysql -u bill -p

Nach Eingabe des richtigen Passwortes erscheint folgender Fehler:

Fehler 1045 (28000): Zugriff für Benutzer „bill“@“localhost“ verweigert (mit Passwort: JA)

P粉885562567P粉885562567435 Tage vor641

Antworte allen(2)Ich werde antworten

  • P粉186904731

    P粉1869047312023-09-18 07:57:18

    尝试:

    ~$ mysql -u root -p
    输入密码:
    
    mysql> grant all privileges on *.* to bill@localhost identified by 'pass' with grant option;

    Antwort
    0
  • P粉287345251

    P粉2873452512023-09-18 00:36:21

    您可能有一个匿名用户''@'localhost'''@'127.0.0.1'

    根据手册

    因此,这样的匿名用户将“屏蔽”任何其他用户,如'[any_username]'@'%'在从localhost连接时。

    'bill'@'localhost'匹配'bill'@'%',但会在之前匹配(例如)''@'localhost'

    推荐的解决方案是删除这个匿名用户(这通常是一个好主意)。


    下面的编辑对于主要问题来说大多不相关。这些只是为了回答本主题中其他评论中提出的一些问题。

    编辑1

    通过套接字以'bill'@'%'进行身份验证。

    
        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 秒)
        
    

    编辑2

    完全相同的设置,除了我重新激活了网络,并且现在创建了一个匿名用户''@'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)
    
    

    编辑3

    与编辑2中的情况相同,现在提供匿名用户的密码。

    
        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 秒)
    
    

    结论1,来自编辑1:可以通过套接字进行'bill'@'%'的身份验证。

    结论2,来自编辑2:无论是通过TCP还是通过套接字连接,对身份验证过程没有影响(除了不能通过套接字连接除'something'@'localhost'之外的任何其他用户)。

    结论3,来自编辑3:尽管我指定了-ubill,但我被授予了匿名用户的访问权限。这是因为上面建议的“排序规则”。请注意,在大多数默认安装中,存在一个没有密码的匿名用户(应该进行安全/删除)。

    Antwort
    0
  • StornierenAntwort