码迷,mamicode.com
首页 > 数据库 > 详细

mysql创建登录报错ERROR1045(28000)

时间:2016-04-02 07:19:12      阅读:644      评论:0      收藏:0      [点我收藏+]

标签:mysql   登录报错   error1045(28000)   

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

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


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


技术分享


而本人创建的用户为:

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!到此问题解决。

mysql创建登录报错ERROR1045(28000)

标签:mysql   登录报错   error1045(28000)   

原文地址:http://codingyang.blog.51cto.com/11368359/1759352

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!