如何撤销数据库用户的插件安装/卸载权限?
MySQL插件权限撤销相关问题
问题描述
用于安全审计、识别拥有安装/卸载服务器插件权限用户的查询语句:
SELECT user, host FROM mysql.db WHERE db = 'mysql' and (insert_priv='y') or (delete_priv='y') or (insert_priv='y' and delete_priv='y');
需要撤销上述查询结果中用户的对应权限,有两个疑问:
- 是否存在特定权限项可用于执行此撤销操作?
- 是否可以直接更新
mysql.db表中的insert_priv和delete_priv字段?
解答
禁止直接修改系统表
直接手动更新mysql.db这类系统表是绝对不推荐的做法,原因有二:
- MySQL权限系统存在缓存,手动改表后权限不会立即生效;
- 容易造成权限数据不一致,后续出现权限问题时排查难度极大。
正确的撤销操作方式
安装/卸载服务器插件的权限,本质对应mysql数据库的INSERT和DELETE权限(因为插件元数据存储在mysql.plugin表中),所以要用官方标准的REVOKE命令来处理,步骤如下:
- 用审计查询获取目标用户和主机(比如
user='test_user'、host='localhost'); - 执行撤销命令:
REVOKE INSERT, DELETE ON mysql.* FROM 'test_user'@'localhost';
- 刷新权限让变更立即生效:
FLUSH PRIVILEGES;
额外注意事项
- 执行
REVOKE前,可以先运行SHOW GRANTS FOR 'test_user'@'localhost';查看用户的所有权限,避免误撤销必要权限; - 你当前的账号必须拥有
GRANT OPTION权限,才能执行REVOKE操作。
内容的提问来源于stack exchange,提问作者Phaelax
相关产品推荐
相关产品推荐

