【问题标题】:MySQL refuses connection for users with host %MySQL 拒绝与主机 % 的用户连接
【发布时间】:2012-12-16 13:33:34
【问题描述】:

我有这样定义的 MySQL 5:

CREATE DATABASE foo DEFAULT CHARACTER SET = 'utf8';
GRANT ALL ON foo.* TO foo@'%' IDENTIFIED BY 'foo';
FLUSH PRIVILEGES;

但是,当使用用户foo 访问时,通过foo,连接被拒绝。 当我将其更改为

GRANT ALL ON foo.* TO foo@localhost IDENTIFIED BY 'foo';

MySQL 让我进入。 为什么第一个不起作用? AFAIK,% 应该匹配任何内容。

更新:发现这个,可能与http://forums.mysql.com/read.php?30,158830,158830

有关

手册参考:(没有找到答案)

【问题讨论】:

    标签: mysql privileges


    【解决方案1】:

    来自mysqldocumentation

    一个非常常见的错误是插入一个 Host='%' 和 User='some_user' 的新条目,认为这使您可以指定 localhost 从同一台机器进行连接。这不起作用的原因是默认权限包括 Host='localhost' 和 User='' 的条目。因为该条目的主机值 'localhost' 比 '%' 更具体,所以在从 localhost 连接时优先使用它而不是新条目!正确的过程是插入第二个 Host='localhost' 和 User='some_user' 的条目,或者删除 Host='localhost' 和 User='' 的条目。删除条目后,请记住发出 FLUSH PRIVILEGES 语句以重新加载授权表。另请参阅第 6.2.4 节,“访问控制,第 1 阶段:连接验证”。

    执行第一个命令后检查mysql.user

    CREATE DATABASE foo DEFAULT CHARACTER SET = 'utf8';
    GRANT ALL ON foo.* TO foo@'%' IDENTIFIED BY 'foo';
    FLUSH PRIVILEGES;
    select * from mysql.user where User='foo';
    

    【讨论】:

      猜你喜欢
      • 2016-10-08
      • 1970-01-01
      • 1970-01-01
      • 2016-01-27
      • 2013-07-06
      • 1970-01-01
      • 1970-01-01
      • 2017-05-04
      相关资源
      最近更新 更多