如何在mysql中回收用户权限_mysql权限回收操作方法
#技术教程 发布时间: 2026-01-14
MySQL中回收用户权限需用REVOKE语句精确匹配原授权层级与对象,再执行FLUSH PRIVILEGES立即生效;须具备GRANT OPTION或更高权限,回收后应通过SHOW GRANTS或实际操作验证。
在 MySQL 中回收用户权限,主要通过 REVOKE 语句实现,配合 FLUSH PRIVILEGES 确保变更立即生效。操作前需具备 GRANT OPTION 权限或更高权限(如 root),且必须明确指定要撤销的权限类型、作用范围及目标用户。
明确要回收的权限和作用范围
MySQL 权限分层级:全局(*.*)、数据库级(db_name.*)、表级(db_name.table_name)等。回收时必须与当初授权时的层级和对象完全匹配,否则可能失败或无效。
- 比如用户曾用
GRANT SELECT ON test.users TO 'u1'@'localhost';授予表级权限,回收时就得写:REVOKE SELECT ON test.users FROM 'u1'@'localhost'; - 若原授权是数据库级:
GRANT INSERT, UPDATE ON app_db.* TO 'u1'@'%';,则回收应为:REVOKE INSERT, UPDATE ON app_db.* FROM 'u1'@'%'; - 不能用
REVOKE ALL ON *.*直接清空所有权限——MySQL 不支持模糊撤销,必须逐项或使用REVOKE ALL PRIVILEGES, GRANT OPTION组合。
执行 REVOKE 并刷新权限缓存
REVOKE 命令本身只修改权限元数据,不自动刷新内存中的权限列表。用户下次连接时才会加载新配置,但已存在的连接仍保留旧权限。如需立即生效,必须手动刷新:
- 执行:
REVOKE SELECT, INSERT ON sales.* FROM 'reporter'@'192.168.1.%'; - 紧接着运行:
FLUSH PRIVILEGES; - 注意:只有对 mysql 系统库有写权限的用户才能执行 FLUSH PRIVILEGES;普通用户无法触发该操作。
检查回收结果是否生效
回收后建议验证,避免遗漏或误操作:
- 查看用户当前权限:
SHOW GRANTS FOR 'u1'@'localhost'; - 检查 mysql.db、mysql.tables_priv 等系统表(仅限有权限用户):
SELECT * FROM mysql.db WHERE
User='u1' AND Host='localhost' AND Db='test'; - 实际用该用户登录,尝试执行被回收的操作(如 SELECT),确认返回
ERROR 1142 (42000): SELECT command denied类提示。
特殊情况处理:回收所有权限并限制登录
若需彻底停用某用户,可组合操作:
- 先回收全部权限:
REVOKE ALL PRIVILEGES, GRANT OPTION ON *.* FROM 'olduser'@'%'; - 再删除用户(MySQL 5.7+ 支持):
DROP USER 'olduser'@'%';(自动清除权限,无需 FLUSH) - 若版本较老(如 5.6),需分步:
DROP USER不可用,改用DELETE FROM mysql.user WHERE User='olduser' AND Host='%';,之后必须FLUSH PRIVILEGES;
上一篇 : c# 如何实现插件化开发
下一篇 : 1平方公里是多少亩 1平方公里等于几亩
-
SEO外包最佳选择国内专业的白帽SEO机构,熟知搜索算法,各行业企业站优化策略!
SEO公司
-
可定制SEO优化套餐基于整站优化与品牌搜索展现,定制个性化营销推广方案!
SEO套餐
-
SEO入门教程多年积累SEO实战案例,从新手到专家,从入门到精通,海量的SEO学习资料!
SEO教程
-
SEO项目资源高质量SEO项目资源,稀缺性外链,优质文案代写,老域名提权,云主机相关配置折扣!
SEO资源
-
SEO快速建站快速搭建符合搜索引擎友好的企业网站,协助备案,域名选择,服务器配置等相关服务!
SEO建站
-
快速搜索引擎优化建议没有任何SEO机构,可以承诺搜索引擎排名的具体位置,如果有,那么请您多注意!专业的SEO机构,一般情况下只能确保目标关键词进入到首页或者前几页,如果您有相关问题,欢迎咨询!
User='u1' AND Host='localhost' AND Db='test';