ERROR 1045(28000)信息是由于权限的问题。这个ERROR分为两种状况:mysql
第一种:sql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO),这种状况是没有用密码直接登陆,这时须要输入密码数据库
第二种:ide
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES),这种状况是用了密码了,可是,密码不对或者是本地用这个用户名和密码没有权限链接登陆工具
下面主要说一下,针对第二种状况如何解决:spa
先说一下个人使用场景:首先,在安装好mysql后利用mysqladmin工具,设置了用户名root和密码123456后,利用这个用户名和密码,登陆后,进入mysql数据库,而后,利用:blog
mysql>grant all on openfire.* to mysql@'%' identified by '123456';ip
mysql>flush privileges;it
mysql>exit;table
而后,利用新用户名mysql和密码123456登陆:
mysql -umysql -p123456 回车,出现了第二种状况。
此时,咱们利用root用户登陆,发现没有任何问题,而后,咱们输入如下Sql语句查看下数据库存储用户的表:
mysql>use mysql;
mysql>select host,user from user;
注意: //@"%" 表示对全部非本地主机受权,不包括localhost。不建议设为本机IP,防止IP变化。
经过这个sql语句查看一下,咱们发现,mysql用户在本机(localhost或者127.0.0.1)上经过mysql用户没法链接数据库,因而咱们再次利用grant从新为mysql用户赋予权限
mysql>grant all on openfire.* to mysql@localhost identified by '123456';
mysql>flush privileges;
mysql>exit;
再次利用mysql用户登陆,这时候能够成功登陆。个人这种状况是本机不能用特定用户链接数据库。
另一种就是密码错误时的状况:
用户登陆时,首先会在数据库user表里查找这个表,那么是否是可绕过这张权限表呢。答案是能够的。咱们先停下mysql服务,service mysqld stop,而后,找到my.cnf文件,在[mysqld]下方,添加:
skip-grant-tables,以下所示:
保存后,重启mysql的服务,而后,登陆时,不输入密码,能够成功登陆。