REVOKE语句用于撤销用户权限,基本语法为REVOKE权限类型ON数据库名.表名FROM'用户名'@'主机地址';可撤销特定权限、全部权限或管理权限,执行后建议FLUSH PRIVILEGES刷新,且需注意用户名和主机名精确匹配。

在 MySQL 中,REVOKE 语句用于撤销已授予用户的权限。正确使用该语句可以精细化管理数据库访问权限,提升安全性。
基本语法结构
REVOKE 的基本语法如下:
REVOKE 权限类型 [(列名)] ON 数据库名.表名 FROM '用户名'@'主机地址';说明:
- 权限类型:如 SELECT、INSERT、UPDATE、DELETE、ALL PRIVILEGES 等
- 数据库名.表名:指定权限作用范围,可用 *.* 表示所有数据库的所有表
- 用户名@主机地址:必须与 GRANT 授予权限时使用的完全一致
常见撤销操作示例
以下是一些典型场景的 REVOKE 使用方式:
- 撤销某用户对特定表的插入权限:
REVOKE INSERT ON mydb.users FROM 'jim'@'localhost'; - 撤销某用户在某个数据库上的所有权限:
REVOKE ALL PRIVILEGES ON mydb.* FROM 'jim'@'localhost'; - 撤销全局所有权限(需注意不会自动删除用户):
REVOKE ALL PRIVILEGES ON *.* FROM 'anna'@'%'; - 撤销管理类权限(如 SUPER、RELOAD):
REVOKE SUPER ON *.* FROM 'admin'@'192.168.1.%';
撤销后刷新权限
权限更改后,建议执行以下命令使变更立即生效:
FLUSH PRIVILEGES;虽然某些情况下 MySQL 会自动刷新,但手动执行可确保权限立即更新,避免延迟问题。
注意事项
- REVOKE 不会删除用户账户本身,仅移除权限
- 如果用户没有对应权限,执行 REVOKE 会报错,可先用 SHOW GRANTS 查看当前权限
- 撤销 ALL PRIVILEGES 不包含 GRANT OPTION,如需撤销授权能力,应单独处理:
REVOKE GRANT OPTION ON db.table FROM 'user'@'host'; - 主机名和用户名必须精确匹配,'user'@'%' 和 'user'@'localhost' 被视为不同主体
基本上就这些。只要语法写对,权限撤销是安全且可控的操作。










