在 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' 被视为不同主体
基本上就这些。只要语法写对,权限撤销是安全且可控的操作。
