我已经设置mysql,并创建了一个用户‘测试’,并为它提供了一个密码。
奇怪的是,对于测试用户来说,我可以使用我安装的mysql机器的密码进行访问,但是当我试图远程访问时,我需要提供一个密码。
为什么会有这种行为?知道吗?
发布于 2015-07-03 13:25:43
这是MySQL身份验证和当前用户安装的方式。
当您运行此命令时
SELECT USER(),CURRENT_USER();您很快就会了解到,用户()告诉您如何查看mysqld如何尝试登录,而当前则告诉您mysqld是如何允许您登录的。三年前我在为什么用户表中不存在OS登录,但我仍然可以登录到MySQL?上讨论过这个问题
我的猜测是,当前_用户()在mysql.user中的任何内容都没有密码。
您可以运行SELECT CONCAT(QUOTE(user),QUOTE(host)) userhost,password FROM mysql.user;来查看用户。您可能会注意到密码是空的。
要解决问题,您必须创建一个远程用户名和密码。
发布于 2015-07-04 02:26:01
GRANT ... TO user@localhost ...
and
GRANT ... TO user@'%' ...相互独立。
另外,如果主机名为my.site.com或%.site.com或11.22.33.44或11.22.33.%,则规则会变得更加复杂。特别是,其中一些可以引用同一个客户端,因此对于哪个GRANT的生效变得很棘手。
https://dba.stackexchange.com/questions/105868
复制相似问题