MySQL授权报1133_mysql 数据库增加用户与为用户授权。 ERROR 1133 (42000): Can't find any matching row in the user table。...

ERROR 1133 (42000): Can't find any matching row in the user table

1、问题描述

使用set password for 'root'@'localhost'=password('MyNewPass4!'); 命令修改mysql数据库root用户密码提示**ERROR 1133 (42000): Can't find any matching row in the user table**错误

2、主要原因

错误提示的字面意思:在用户表中找不到任何匹配的行

登录mysql执行以下命令

use mysql;

select Host,User from user;

1

a5096e2bf3000f4ac1227e3ade5d9885.png

主要原因是修改密码的条件不否

3、解决办法

将set password for 'root'@'localhost'=password('MyNewPass4!'); 代码中的localhost修改%,与数据库Host字段值一致

set password for 'root'@'%'=password('MyNewPass4!');

刷新

flush privileges;

ed011cdf11dce4096dc622ea75bd9501.png

===================================================================================================================

自我测试案例如下  :

因为在客户端进行连接的时候没有权限,报错如下:

23edee83174288edb1daef1218467278.png

在进行授权的时候发现 报错 1133,如下所示。

[root@localhost][mysql]> grant all privileges on *.* to 'root'@'%' with grant option;

ERROR1133 (42000): Can't find any matching row in the user table

这是因为,在授权进行授权的时候 ,需要读取 mysql.user 表中的记录。如果没有   ‘root’@'%'  这条记录,那么就不能授权,如下所示

[root@localhost][mysql]> select Host,User from user;+----------------+---------------+

| Host | User |

+----------------+---------------+

| 192.168.17.182 | repl |

| localhost | mysql.session |

| localhost | mysql.sys |

| localhost | root |

+----------------+---------------+

4 rows in set (0.00 sec)

那么需要进行 增加用户的操作:

[root@localhost][mysql]> create user 'root'@'%' identified by '123456';

Query OK,0 rows affected (0.00 sec)

然后我们再来查询 mysql.user 的记录,可以发现有了  ‘root’@'%'  这条记录  :

[root@localhost][mysql]> select host,user from user;+----------------+---------------+

| host | user |

+----------------+---------------+

| % | root |

| 192.168.17.182 | repl |

| localhost | mysql.session |

| localhost | mysql.sys |

| localhost | root |

+----------------+---------------+

5 rows in set (0.00 sec)

下面再进行授权就没有问题了:

[root@localhost][mysql]> flush privileges;

Query OK,0 rows affected (0.01sec)[root@localhost][mysql]> grant all privileges on *.* to 'root'@'%';

Query OK,0 rows affected (0.01 sec)

也可以如下进行授权:

[root@localhost][mysql]> grant all privileges on *.* to 'root'@'%' with grant option;

Query OK,0 rows affected (0.00sec)[root@localhost][mysql]>

[root@localhost][mysql]> flush privileges;

Query OK,0 rows affected (0.01 sec)

然后在客户端可以访问了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值