MySQL 与通配符(任何)用户和主机的连接冲突

MySQL connection conflict with wildcard (any) user and host

我的 MySQL 服务器上发生奇怪的用户冲突。 我有 2 个用户。实际上我被第一个通配符用户(任何用户@任何主机)困住了,为了安全不得不拒绝他的所有访问:

╔══════╦══════════════╦══════════╦═══════════════════╦═══════╗
║ User ║     Host     ║ Password ║ Global privileges ║ Grant ║
╠══════╬══════════════╬══════════╬═══════════════════╬═══════╣
║ Any  ║ %            ║ No       ║ USAGE             ║ No    ║
║ root ║ 10.15.15.115 ║ No       ║ ALL PRIVILEGES    ║ Yes   ║
╚══════╩══════════════╩══════════╩═══════════════════╩═══════╝

第二个是我用的(忘了他没有密码)。当我尝试连接 'root'@'10.15.15.115' 时,MySQL 说:

Access denied to ''@'%'

即使我明确指定要连接到 'root'@'10.15.15.115'

为什么 MySQL 与第一个通配符用户混淆?

你用什么来连接?我假设命令行。如果是这样,您通过命令行进行的连接尝试看起来像这样吗?

mysql -u root -h 10.15.15.115

主机字段指定您要连接的主机来自,但我对您所写内容的看法听起来像是 10.15.15.115 是您要连接的服务器.

如果 MySQL 无法匹配用户名和主机,它会回退到匿名用户(启用时),这看起来就像这里的问题。

根据你显示的结果,我不确定你是如何禁用匿名用户的,但我很确定问题是你的主机不匹配,因此它正在尝试匿名用户您已禁用它,导致出现错误消息。

设置用户时,请记住主机 localhost127.0.0.110.15.15.115 都是不同的连接,即使连接发生在同一台机器上需要使用正确的主机值才能连接。