首页/数据/数据库速查/权限表与实用查询(mysql.user/db/tables_priv)

权限表与实用查询(mysql.user/db/tables_priv)

权限落库在 mysql 系统库;日常用 SHOW GRANTS,批量审计直接查表更全面,但系统表结构随版本变化,写脚本要谨慎。

数据库速查数据更新于 2026-10-13

权限表与实用查询是什么

MySQL 的账号与权限落在 mysql 系统库里:mysql.user 存账号级全局权限,mysql.db 存库级权限,mysql.tables_priv / columns_priv 存表列级权限,外键列出的 role_edges 记录角色授予关系。日常查看某一个账号用 SHOW GRANTS 最省事;要批量审计、跨账号比对时,直接查 information_schema 的权限视图比翻系统表更稳,因为系统表结构随版本变化很大。

基本信息

适用版本MySQL 5.7 / 8.0(8.0 数据字典重构,系统表列有变化)
全局权限mysql.user(含密码策略与账号锁定状态)
库表级权限mysql.db、mysql.tables_priv、mysql.columns_priv
角色相关mysql.role_edges 记录「角色授予了谁」
推荐视图SHOW GRANTS FOR 'app'@'%'、information_schema.*_PRIVILEGES
权限要求读取系统库需要相应 SELECT 权限,通常只有 DBA 账号有

典型使用场景

  • 账号盘点:列出所有账号、主机范围和认证插件,清理离职人员与历史测试账号
  • 权限审计:导出某账号的完整权限链,核对是否符合最小权限原则
  • 排查连不上:确认账号是否被锁定、密码是否过期、来源主机是否在白名单内
  • 角色治理:查看角色授予关系,回收不再使用的角色绑定
  • 发布前确认:检查应用账号是否只拿到了必要的库表权限

常用审计查询

常用审计查询
-- 账号清单与状态:注意 account_locked、password_expired
SELECT user, host, account_locked, password_expired, plugin FROM mysql.user ORDER BY user;

-- 单个账号的完整授权链(推荐,含角色展开)
SHOW GRANTS FOR 'app'@'10.%';

-- 角色授予关系
SELECT * FROM mysql.role_edges;

-- 表级权限批量检索
SELECT grantee, table_schema, table_name, privilege_type
FROM information_schema.table_privileges
WHERE grantee LIKE '%app%' LIMIT 20;

-- 库级权限检索
SELECT grantee, table_schema, privilege_type FROM information_schema.schema_privileges WHERE grantee LIKE '%app%';

权限视图对照

视图 / 表粒度主要用途
mysql.user全局账号是否存在、是否锁定、认证插件与全局权限
mysql.db库库级授权,注意空库名通配的历史写法
mysql.tables_priv表表级明细,常用于收窄的临时授权
information_schema.user_privileges全局只读视图,跨版本列名更稳定
information_schema.table_privileges表按 grantee 批量筛选,写审计脚本用它
不要用 INSERT/UPDATE/DELETE 直接改 mysql 系统表:8.0 已改为数据字典管理,绕开语句修改可能造成元数据不一致;账号与权限一律走 CREATE USER / GRANT / REVOKE / ALTER USER。
FLUSH PRIVILEGES 只在直接改系统表之后才需要,正常用 GRANT/REVOKE 时 MySQL 会自动刷新内存权限表;把这个命令当作「万能解药」是常见的误解。

易错点

  • 跨版本套用 mysql 系统表列名写脚本:5.7 与 8.0 列结构不同,升级后脚本直接报错
  • 审计只看 mysql.user 的全局权限:库级、表级授权被漏掉,实际权限远大于报告结论
  • 账号用 '%' 主机范围加简单密码:爆破面被放大,应绑定具体网段并使用强密码策略
  • 把权限查询脚本交给低权限账号运行:看不到完整结果却以为权限干净
  • 回收权限后不验证应用:REVOKE 影响面广,回收前应在预发验证关键链路

数据来源与参考

  • MySQL 8.0 Reference Manual: Access Control and Account Management

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌