ERROR 1044 (42000)报错的解决

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 【问题背景】用root用户创建用户的时候,报错ERROR 1044 (42000) mysql> grant  select on  *.* to rep@'%' identified by '123';ERROR 1045 (28000): Access d...

【问题背景】用root用户创建用户的时候,报错ERROR 1044 (42000)

mysql> grant  select on  *.* to rep@'%' identified by '123';
ERROR 1045 (28000): Access denied for user 'root'@'%' (using password: YES)

 

以下是整个问题的分析和解决过程:

【1】确定当前的登录用户,避免出现当前登录的用户(http://blog.itpub.net/12679300/viewspace-1453490/

mysql> select current_user();
+----------------+
| current_user() |
+----------------+
| root@%         |
+----------------+
1 row in set (0.00 sec)

说明:当前用户没有问题;

 

【2】查看当前用户的权限:show grants for root@'%' ;

mysql> show grants for root@'%' ;

+---------------------------------------------------------------------------------------------------------------------------------------------------------+
|  Grants for root@%                                                                                                                          |
+---------------------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '*228E49B99A5F24B7CDA2CC2A9F4A70635708E6CC' |
+----------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

说明:当前用户具有所有的权限;

 

【3】查看用户的授权权限

mysql> SELECT host,user,password,Grant_priv,Super_priv FROM  mysql.user;

image

说明:当前用户'root'@'%' Grant_priv的权限状态为"N",说明当前用户没有权限授权;

 

【4】解决方法:UPDATE mysql.user SET Grant_priv='Y'  WHERE User='root';

mysql>  SELECT host,user,password,Grant_priv,Super_priv FROM mysql.user;;
image

 

mysql> UPDATE mysql.user SET Grant_priv='Y'  WHERE User='root';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

 

mysql> FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.00 sec)

 

mysql>  select GRANTEE, PRIVILEGE_TYPE, IS_GRANTABLE from information_schema.user_privileges;

image 

 

【5】现在可以进行用户的创建和授权了

mysql> grant  select on  *.* to rep@'%' identified by '123';
Query OK, 0 rows affected (0.00 sec)

 

【总结】其实整个过程就是MySQL的权限问题,当前用户具有Super_priv的权限,但是并没有Grant_priv的权限,所以导致root@‘%’用户在进行授权的时候报错了;

MySQL的权限控制是一个很有趣的问题,后续有时间的话,再整理和大家分享。

........................................................................................................................................................................

本文作者:JOHN,某上市公司DBA,业余时间专注于数据库的技术管理,从管理的角度去运用技术。

ORACLE技术博客:猎人笔记               数据库技术群:367875324 (请备注数据库类型)

........................................................................................................................................................................

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
Java 数据库连接 数据库
ERROR 11848
ERROR 11848
163 1
|
2月前
|
安全 网络安全 开发者
OpenScManager failed , error code = 5
【10月更文挑战第7天】OpenScManager failed , error code = 5
126 3
|
JavaScript 前端开发 开发者
Error,Error,到底什么是Error
总所周知,当系统运行出现错误的时候,就会抛出一个 Error ,那么这个 Error 是什么?它是怎么来的?它又是怎么被抛出的?它又是怎么被捕获的?这些问题,我们一起来探讨一下。
224 0
日常安装Error报错汇总
日常安装Error报错汇总
95 0
|
关系型数据库 MySQL
把log_error_verbosity设置为3,调试连接问题ERROR 2003 (HY000):ERROR 1045 (28000):
mysql 8里面使用global log_error_verbosity控制日志记录的详细程度
C中error的使用
C中error的使用
98 0
|
Java 应用服务中间件 Windows
gittalk Error: Not Found.
gittalk Error: Not Found.
264 0
gittalk Error: Not Found.