当我尝试添加一个新的用户
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)
而且我证实,之前添加的用户仍然可以从任何地方连接(所以不是防火墙问题)。
我的错误在哪里? 或者可能是一种解决方法?
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
连接。 如果没有本地主机帐户,当rs3
从本地主机连接时,由mysql_install_db
创build的localhost的匿名用户帐户将优先。 因此,rs3
将被视为匿名用户。 原因是匿名用户帐户具有比'rs3'@'%'
帐户更具体的主机列值,因此在用户表sorting顺序中更早。
关于sorting顺序:
服务器使用sorting规则,首先排列具有最特定主机值的行。 文字主机名和IP地址是最具体的。 (文字IP地址的特异性不受它是否有networking掩码的影响,所以
192.168.1.13
和192.168.1.0/255.255.255.0
被认为同样具体。)模式'%'
表示“任何主机”,并且是最不具体的 。 空string''
也意味着”任何主机“,但在'%'
之后sorting。 具有相同主机值的行首先与最具体的用户值sorting(blank User
值意味着“任何用户”,并且是最不具体的)。
更多阅读: http : //dev.mysql.com/doc/refman/5.5/en/adding-users.html
重新启动服务器确实没有什么flush privileges
也没有service stop mysql
/ service start mysql
没有。
我在重新引导之前添加的所有(许多)用户现在都可以访问。
我现在用相同的命令添加的新用户也可以访问。
我不愿意接受我的答案。 我不知道这是否是一个已知/频繁的问题与MySQL。 事实上,我不得不重新启动服务,但也是整个计算机是相当令人不安的。