MySQL撤销(revoke)用户权限

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 数据库的全部权限,而且无法撤销这些权限。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值