无法为所有来源添加用户

无法为所有来源添加用户

当我尝试添加新用户时

grant all privileges on retrosias.* to 'rs3'@'%' identified by 'a';

我甚至无法本地连接:

ERROR 1045 (28000): Access denied for user 'rs3'@'localhost' (using password: YES)

如果我使用添加同一个用户

grant all privileges on retrosias.* to 'rs3'@'localhost' identified by 'a';

然后我可以在本地连接,但我真正的需求是从任何计算机连接。

我的服务器版本是

Server version: 5.5.28-0ubuntu0.12.04.3 (Ubuntu)

并且我验证了之前添加的用户仍然可以从任何地方连接(因此不是防火墙问题)。

我的错误在哪里?或者有什么解决方法?

答案1

mysql> select User,Host,Password from user;
+------+------------+-------------------------------------------+
| User | Host       | Password                                  |
+------+------------+-------------------------------------------+
| root | localhost  | *62395BB52702DE50773EBF629DD4AE90F07FFD94 |
| root | sgeorge-mn |                                           |
| root | 127.0.0.1  | *62395BB52702DE50773EBF629DD4AE90F07FFD94 |
| root | ::1        |                                           |
|      | localhost  |                                           |
|      | sgeorge-mn |                                           |
| suku | localhost  | *EAF5C8242B88A14545BB61062D64CA5207DD1A37 |
| rs3  | %          | *0FDB28C86F3804FCA60FA633DB4264B0EB169D9B |
| rs3  | localhost  | *667F407DE7C6AD07358FA38DAED7828A72014B4E |
+------+------------+-------------------------------------------+
9 rows in set (0.00 sec)

必须同时拥有 和 两个(% and localhost)帐户才能rs3从任何地方连接rs3。如果没有 localhost 帐户,则从 localhost 连接mysql_install_db时, 创建的 localhost 匿名用户帐户将优先。因此,将被视为匿名用户。原因是匿名用户帐户比帐户具有更具体的 Host 列值,因此在用户表排序顺序中排在更前面。rs3rs3'rs3'@'%'

关于排序顺序:

服务器使用排序规则,首先对具有最具体 Host 值的行进行排序。文字主机名和 IP 地址是最具体的。(文字 IP 地址的特异性不受其是否具有网络掩码的影响,因此192.168.1.13192.168.1.0/255.255.255.0被视为同样具体。)模式'%'表示“任何主机”,并且最不具体。空字符串''也表示“任何主机”,但排在后面'%'。具有相同 Host 值的行按最具体的 User 值排序(ablank User值表示“任何用户”,且最不具体)。

更多阅读:http://dev.mysql.com/doc/refman/5.5/en/adding-users.html

答案2

重新启动服务器确实完成了既flush privileges没有完成service stop mysqlservice start mysql没有完成的事情。

重启之前我添加的所有(许多)用户现在都可以访问了。

并且我现在使用相同命令添加的新用户也可以访问。

我不太愿意接受我的答案。我不知道这是否是 mysql 的已知/常见问题。我不仅要重新启动服务,还要重新启动整个计算机,这真是令人不安。

相关内容