看来,从本地主机接受用户的解决scheme是用@'localhost'(除了user @'%')创build一个用户的副本。 我很努力的去理解这里的逻辑,因为看起来有点疯狂,任何主机通配符'%'都不会接受本地主机连接。 处理大量用户时,创build第二个用户不是很实际。 如果用户更改自己的密码,则会使其他用户不受影响。
是否有任何解决方法允许用户@'%'接受本地主机连接?
连接到mysqld的localhost
风格强制mysql客户端通过套接字文件进行authentication。
通过通配符连接%
需要通过TCP / IP连接到mysqld。
如果myuser@'%'
的密码是mys3cr3t
,并且你不想添加myuser@'localhost'
,我想build议如下:
像这样连接到mysql
mysql --protocol=tcp -umyuser -pmys3cr3t
使用--protocol=tcp
强制mysql客户端程序使用TCP / IP进行连接
一旦连接,运行此查询
SELECT USER(),CURRENT_USER();
USER()报告你如何尝试在MySQL中进行身份validation
CURRENT_USER()报告你如何被允许在MySQL中进行身份validation
我在2012年1月18日的DBA StackExchange中对此进行了描述 。
您需要删除匿名用户,因为MySQL的模式匹配将首先匹配他们 。
运行mysql_secure_installation
脚本或手动删除它们 。