mysql赋予权限的时候报错_用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 mysql@'%' identified by '123456';

mysql>flush privileges;

mysql>exit;

然后,利用新用户名mysql和密码123456登录:

mysql -umysql -p123456 回车,出现了第二种情况。

此时,我们利用root用户登录,发现没有任何问题,然后,我们输入以下Sql语句查看下数据库存储用户的表:

mysql>use mysql;

mysql>select host,user from user;

ab2d91d7726d7c46b2115adc26343f91.png

注意://@"%" 表示对所有非本地主机授权,不包括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,如下所示:

5fd90f93e5288b9104a250a030ad1ef3.png

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值