概述
文章目录
- 撤销用户对某个数据库的全部权限
- 撤销用户对某个数据库的部分权限
- 撤销用户对某个数据库的某张表的部分权限
- 撤销用户对任何数据库的任何表的部分权限
- 撤销 WITH GRANT OPTION 权限
- 权限表
- 撤销权限的巨坑
- 撤销语句要和授权语句完全一致
- 权限 USAGE 是无法撤销的
- 数据库 test 的资源可以随意访问
REVOKE
的含义:撤销、取消、使无效、作废。
撤销用户对某个数据库的全部权限
mysql> REVOKE ALL PRIVILEGES ON database_name.* FROM 'user_name'@'host';
注:关键字 privileges
可以省略。
撤销用户对某个数据库的部分权限
例如,收回用户对某个数据库的插入、更新、删除的权限:
mysql> REVOKE INSERT, UPDATE, DELETE ON database_name.* FROM 'user_name'@'host';
撤销用户对某个数据库的某张表的部分权限
例如,收回用户对某个数据库的某个表的插入、更新、删除的权限:
mysql> REVOKE INSERT, UPDATE, DELETE ON database_name.table_name FROM 'user_name'@'host';
撤销用户对任何数据库的任何表的部分权限
例如,收回用户查询表数据的权限(注:任何数据库的任何表都不能查询):
mysql> REVOKE SELECT ON *.* FROM 'user_name'@'host';
撤销 WITH GRANT OPTION 权限
必须使用下面的语句才能撤销 WITH GRANT OPTION 权限:
mysql> revoke all privileges,grant option from 'user_name'@'host';
注:关键词 privileges
可以省略掉。
权限表
撤销权限的巨坑
撤销语句要和授权语句完全一致
假如你给用户 pig@%
授权的语句如下:
mysql> GRANT SELECT ON test.user TO 'pig'@'%';
那么使用如下的语句,根本无法撤销上述的查询权限(即不能撤销该用户对 test 数据库中 user 表的 SELECT 操作权限):
mysql> REVOKE SELECT ON *.* FROM 'pig'@'%';
而且使用下面的语句,还会报错:
mysql> REVOKE SELECT ON test.* FROM 'pig'@'%';
ERROR 1141 (42000): There is no such grant defined for user 'pig' on host '%'
同样地,如果你使用下面的语句给用户 pig@%
授权:
GRANT SELECT ON *.* TO 'pig'@'%';
那么使用下面的语句,根本无法撤销该用户对 test 数据库中 user 表的 SELECT 权限:
REVOKE SELECT ON test.user FROM 'pig'@'%';
权限 USAGE 是无法撤销的
创建用户的时候,默认会赋予 USAGE
权限:
GRANT USAGE ON *.* TO 'user_name'@'host';
但是 USAGE
权限无法撤销。
数据库 test 的资源可以随意访问
新建的用户默认拥有 test 数据库的全部权限,而且无法撤销这些权限。
最后
以上就是拉长冬瓜为你收集整理的MySQL撤销(revoke)用户权限撤销用户对某个数据库的全部权限撤销用户对某个数据库的部分权限撤销用户对某个数据库的某张表的部分权限撤销用户对任何数据库的任何表的部分权限撤销 WITH GRANT OPTION 权限权限表撤销权限的巨坑的全部内容,希望文章能够帮你解决MySQL撤销(revoke)用户权限撤销用户对某个数据库的全部权限撤销用户对某个数据库的部分权限撤销用户对某个数据库的某张表的部分权限撤销用户对任何数据库的任何表的部分权限撤销 WITH GRANT OPTION 权限权限表撤销权限的巨坑所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复