ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

mysql 数据库增加用户与为用户授权

2022-08-02 10:01:32  阅读:186  来源: 互联网

标签:rows 数据库 用户 sec user mysql root localhost


参考地址:http://t.zoukankan.com/chendian0-p-13903000.html

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

 

 

 

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

3、解决办法

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

 

 

 

 

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

     

自我测试案例如下  :

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

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

[root@localhost][mysql]> grant all privileges on *.* to 'root'@'%' with grant option;
ERROR 1133 (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.01 sec)

[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.00 sec)

[root@localhost][mysql]> 
[root@localhost][mysql]> flush privileges;
Query OK, 0 rows affected (0.01 sec)

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

标签:rows,数据库,用户,sec,user,mysql,root,localhost
来源: https://www.cnblogs.com/js1314/p/16542767.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有