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)
尝试:
您可能有一个匿名用户
''@'localhost'
或''@'127.0.0.1'
。根据手册:
因此,这样的匿名用户将“屏蔽”任何其他用户,如
'[any_username]'@'%'
在从localhost
连接时。'bill'@'localhost'
匹配'bill'@'%'
,但会在之前匹配(例如)''@'localhost'
。推荐的解决方案是删除这个匿名用户(这通常是一个好主意)。
下面的编辑对于主要问题来说大多不相关。这些只是为了回答本主题中其他评论中提出的一些问题。
编辑1
通过套接字以
'bill'@'%'
进行身份验证。编辑2
完全相同的设置,除了我重新激活了网络,并且现在创建了一个匿名用户
''@'localhost'
。编辑3
与编辑2中的情况相同,现在提供匿名用户的密码。
结论1,来自编辑1:可以通过套接字进行
'bill'@'%'
的身份验证。结论2,来自编辑2:无论是通过TCP还是通过套接字连接,对身份验证过程没有影响(除了不能通过套接字连接除
'something'@'localhost'
之外的任何其他用户)。结论3,来自编辑3:尽管我指定了
-ubill
,但我被授予了匿名用户的访问权限。这是因为上面建议的“排序规则”。请注意,在大多数默认安装中,存在一个没有密码的匿名用户(应该进行安全/删除)。