针对MySQL创建用户后无法登录的原因

http://www.cnblogs.com/kevingrace/p/5715223.html


使用mysql,因为root权限过高,所以考虑新建一用户appadmin,权限仅为要用到的数据库。
创建语句如下,其中@“%”是可以在任何地址登录。 :
mysql>grant select,insert,update,delete on test.* to appadmin@"%" identified by "password"; 
创建后在mysql库的user表下查看,有该用户。
但是使用“mysql -u appadmin -ppassword” 登录,
提示无法登录:ERROR 1045 (28000): Access denied for user 'appadmin'@'localhost' (using password: YES)


百思不得其解!
经过排查,发现mysql.user 表中有另外一些记录产生了作用,最有可能影响的就是已经有一条''@localhost记录,就是用户名是空,主机字段是localhost的记录。 
查看该表果然有,如下: 
mysql> select host,user,password from mysql.user; 
+-----------+------------------+-------------------------------------------+ 
| host | user | password | 
+-----------+------------------+-------------------------------------------+ 
| localhost | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | 
| mza | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | 
| 127.0.0.1 | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | 
| localhost | | | 
| mza | | | 
| localhost | debian-sys-maint | *19DF6BF8310D46D681AE072AB73ECEC99C018C19 | 
| % | appadmin | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 | 
+-----------+------------------+-------------------------------------------+ 
7 rows in set (0.00 sec)

但是删除那些为空(匿名)的用户后仍然无法登录。
(可能是因为没有重启mysql)于是只好耐着性子看mysql参考手册。
发现其中增加用户部分有这么一段话: 
其中两个账户有相同的用户名monty和密码some_pass。两个账户均为超级用户账户,具有完全的权限可以做任何事情。一个账户 ('monty'@'localhost')只用于从本机连接时。另一个账户('monty'@'%')可用于从其它主机连接。
请注意monty的两个账户必须能从任何主机以monty连接。没有localhost账户,当monty从本机连接时,mysql_install_db创建的localhost的匿名用户账户将占先。结果是,monty将被视为匿名用户。原因是匿名用户账户的Host列值比'monty'@'%'账户更具体,这样在user表排序顺序中排在前面。

这段话说的很清楚,因此执行 
mysql>grant select,insert,update,delete on test.* to appadmin@"localhost" identified by "password"; 
退出后用appadmin登录,成功。


  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值