当你跑的时候
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的行为符合预期,“%”将授予您登录权限。