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

Posted 水滴儿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用grant命令为用户赋权限以后,登录时,出现:ERROR 1045 (28000)相关的知识,希望对你有一定的参考价值。

ERROR 1045(28000)信息是因为权限的问题。这个ERROR分为两种情况:

第一种:

ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: NO),这种情况是没有用密码直接登录,这时需要输入密码

第二种:

ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES),这种情况是用了密码了,但是,密码不对或者是本地用这个用户名和密码没有权限连接登录

下面主要说一下,针对第二种情况如何解决:

先说一下我的使用场景:首先,在安装好mysql后利用mysqladmin工具,设置了用户名root和密码123456后,利用这个用户名和密码,登录后,进入mysql数据库,然后,利用:

mysql>grant all on openfire.* to [email protected]‘%‘ identified by ‘123456‘;

mysql>flush privileges;

mysql>exit;

然后,利用新用户名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 [email protected] identified by ‘123456‘;

mysql>flush privileges;

mysql>exit;

再次利用mysql用户登录,这时候可以成功登录。我的这种情况是本机不能用特定用户连接数据库。

另外一种就是密码错误时的情况:

用户登录时,首先会在数据库user表里查找这个表,那么是不是可绕过这张权限表呢。答案是可以的。我们先停下mysql服务,service mysqld stop,然后,找到my.cnf文件,在[mysqld]下方,添加:

skip-grant-tables,如下所示:

技术分享 

保存后,重启mysql的服务,然后,登录时,不输入密码,可以成功登录。

以上是关于用grant命令为用户赋权限以后,登录时,出现:ERROR 1045 (28000)的主要内容,如果未能解决你的问题,请参考以下文章

MySQL # MySQL对用户权限的简单操作:创建新用户赋权限

怎么给oracle数据库创建用户,并赋权限

怎么给oracle数据库创建用户,并赋权限

mysql ROOT用户grant不能赋权问题

Oracle 基础系列之1.3 用户管理

怎么给oracle数据库创建用户,并赋权限