MySQL查看权限show grants与回收revoke MySQL
前言
排查账号能不能连、能不能改表,要先看该用户有哪些权限。SHOW GRANTS 查看授权,REVOKE 回收多余权限。安全规范遵循最小权限。本文讲解查看、授权、回收、刷新和主机范围。
操作步骤
1. 查看当前用户权限
SHOW GRANTS;
2. 查看指定用户权限
SHOW GRANTS FOR 'app'@'%';
3. 查看所有用户
SELECT user,host FROM mysql.user;
4. 回收某权限
REVOKE DELETE ON dbname.* FROM 'app'@'%';
5. 回收全部权限
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'app'@'%';
6. 刷新权限
FLUSH PRIVILEGES;
7. 查看某库权限
SHOW GRANTS FOR 'app'@'%';
常见坑
- 用户名要带主机 'app'@'%',漏写 host 查不到。
- GRANT 授权后忘 FLUSH,旧会话权限不刷新。
- 直接删 mysql.user 行不安全,用 REVOKE/DROP USER。
- 生产账号给了 ALL 权限,违反最小权限原则。
- 回收后已建立的连接可能仍缓存权限,重连生效。
- 'app'@'localhost' 与 'app'@'%' 是两个账号。
- 权限层级:全局、库、表、列,回收要对应层级。
总结
SHOW GRANTS FOR 用户@主机 看权限,REVOKE 回收对应层级,FLUSH PRIVILEGES 刷新。账号带主机名,生产按最小权限只授必要库表。回收后重连生效,删除账号用 DROP USER。
遇到问题加QQ23979811 协助处理