MySQL中登录报错_mysql创建登录报错ERROR1045(28000)

最近,创建了一个用户。但是登录时出现错误提示:

ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)

网上查找了一下;发现了出现问题的原因。数据库安装时,会创建有一个user为空的匿名用户;而这user为空它可以匹配任何字符。如下图(第四个):

af2165c40623212a09cf20f35933d21d.png

而本人创建的用户为:

Mysql> grant  all  on  itcase.*  to  ‘test‘@‘%‘  identified  by  ‘123456‘;

结果登录时出现了error 1045(280000)提示。创建命令中通配符 % 可以匹配所有字符。

问题就清晰了,当我输入登录命令时:

C:\Users\Administrator>mysql  -utest  -p123456

系统会去寻找匹配字段,用户 test 他的 host 定义为 % ,所有上图 host 字段中任何一项都可以。再到匹配 user 字段, 这时 test 会匹配到第四个用户名为空的字段 。也就是说我们登录的是user为空的匿名用户,而非我们想要的 test 用户;密码验证错误。所以登录不了;

原因找到了,解决方法就是把匿名用户删除就行了。匿名用户是系统自行给予的,而且本身没有设置密码,可以随便登录;从安全方面看,删除匿名用户也可提高数据库的安全性。

用root用户登录mysql;

Mysql> use mysql;

Database Changed

Mysql>delete from user where user=‘‘;

Query OK, 2 rows affected (0.17 sec)

Mysql>exit

OK!到此问题解决。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值