玖叶教程网

前端编程开发入门

MySQL8.0下撤销权限报错ERROR1227 : SYSTEM_USER privilege(s)

概述

今天主要从一个问题来看mysql8的一个新特性:system_user..


一、问题现象

1、赋予新用户所有权限(all privileges)

 grant all privileges on *.* to 'hwb'@'%' with grant option;


2、撤销用户所有权限(all privileges)

授权后发现权限过大,要撤销时报错:ERROR 1227 (42000): Access denied; you need (at least one of) the SYSTEM_USER privilege(s) for this operation,如果是5.7版本是不会报错的

 REVOKE all privileges ON *.* FROM 'hwb'@'%';



二、新特性:system_user权限

查看完MySQL8.0.16官方文档后得知:若要修改用户,必须在MySQL架构上具有CREATE USER权限或UPDATE权限。在MySQL 8.0.16中我们添加了SYSTEM_USER动态权限,以保护用户不受第一种情况的影响:其他拥有CREATE USER权限的用户进行修改。具有SYSTEM_USER权限的帐户不能被没有SYSTEM_USER的帐户修改,即使该帐户具有CREATE USER权限

SYSTEM_USER权限强制执行这样的约定:如果要修改授予SYSTEM_USER权限的用户,那么除了修改用户所需的权限外,还需要具有SYSTEM_USER权限。换句话说,拥有SYSTEM_USER和CREATE权限的用户可以修改拥有SYSTEM_USER权限的用户


三、解决办法

1、授权SYSTEM_USER权限

在新创建的用户下给root账户赋予SYSTEM_USER权限,然后在用root账户取消新用户的所有权限

#hwb用户下操作
mysql> grant system_user on *.* to root@'localhost';
# root用户下的操作
mysql> revoke all privileges on *.* from hwb;




2、直接在要撤销的账户(hwb)下操作

 mysql> revoke all privileges on *.* from hwb;




觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~


发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言