为什么 mySQL 不允许来自 localhost 的用户@'%'?

为什么 mySQL 不允许来自 localhost 的用户@'%'?

看来,接受来自 localhost 的用户的解决方案是使用 @'localhost' 创建用户的副本(除了 user@'%')。我非常努力地想理解这里的逻辑,因为“任何主机”通配符“%”不会接受 localhost 连接,这似乎有点疯狂。在处理大量用户时,创建第二个用户并不实用。如果用户更改了自己的密码,则另一个用户不会受到影响。

有没有什么解决方法可以允许用户@'%'接受本地主机连接?

答案1

连接到 mysqld 的方式localhost强制 mysql 客户端通过套接字文件进行身份验证。

通过通配符连接%要求通过 TCP/IP 连接到 mysqld。

如果有myuser@'%',其密码为mys3cr3t,并且您不想添加myuser@'localhost',我建议您执行以下操作:

像这样连接到mysql

mysql --protocol=tcp -umyuser -pmys3cr3t

使用--protocol=tcp强制 mysql 客户端程序使用 TCP/IP 进行连接

连接后,运行此查询

SELECT USER(),CURRENT_USER();

用户()报告您如何在 MySQL 中进行身份验证

当前用户()报告您被允许在 MySQL 中进行身份验证的方式

我于 2012 年 1 月 18 日在 DBA StackExchange 上写过这篇文章

答案2

您需要删除匿名用户,因为MySQL 的模式匹配将首先匹配它们

跑过mysql_secure_installation脚本或手动删除它们

相关内容