Py学习  »  Shnkc  »  全部回复
回复总数  1

当你跑的时候 mysql -u bill -p ,请 localhost 已解析为您的IP,因为它是127.0.0.1 /etc/hosts 文件,作为默认值 127.0.0.1 localhost 存在。所以,mysql将您解释为 bill@localhost 不被授予 bill@'%' 是的。这就是为什么有两个不同的记录 root 结果中的用户 select host, user from mysql.user; 查询。

处理这个问题有两种方法。

一个是指定一个IP,它不是由 /ETC/主机 尝试登录时的文件。例如,服务器的IP是 10.0.0.2 是的。运行命令时 mysql -u bill -p -h 10.0.0.2 ,您将能够登录。如果你打字 select user(); ,您将得到 bill@10.0.0.2 是的。当然,任何域名都不应该解析为 /ETC/主机 文件。

其次,您需要为这个特定的域名授予访问权限。为了 帐单@localhost ,您应该调用命令 grant all privileges on *.* to bill@localhost identified by 'billpass'; .在这种情况下,您可以使用命令登录 mysql-u比尔-p 是的。一旦登录, 选择用户(); 命令返回 帐单@localhost 是的。

但这只是为了让您尝试在同一主机上登录mysql服务器。从远程主机上看,mysql的行为符合预期,“%”将授予您登录权限。