用grant命令为用户赋权限之后,登陆时,出现:ERROR 1045 (28000)

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的服务,而后,登陆时,不输入密码,能够成功登陆。

相关文章
相关标签/搜索