为什么mySQL不允许用户从本地主机'%'?

看来,从本地主机接受用户的解决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脚本或手动删除它们 。