首页/数据/数据库速查/授权层级与生效顺序(user → db → tables_priv → 会话)

授权层级与生效顺序(user → db → tables_priv → 会话)

权限校验顺序:全局权限 → 库权限 → 表/列权限逐层合并,最终取并集;理解层级才能解释「为什么只授了库权限却能查表」。

数据库速查数据更新于 2026-10-12
用途理解权限生效逻辑
层级全局 *.* → 库 db.* → 表 db.tbl → 列
生效并集,无 deny 规则

层级演示

层级演示
GRANT SELECT ON *.* TO 'r1'@'%';          -- 全库只读
GRANT SELECT, UPDATE ON appdb.* TO 'r1'@'%'; -- 追加剧库写
SHOW GRANTS FOR 'r1'@'%';                    -- 输出按层级分行
MySQL 没有「拒绝优先」的负向权限,只能靠不授予来控制;要「除某库外全库只读」需显式枚举授权。

易错点

  • 不能通过 REVOKE 部分权限实现「只排除一个库」,必须拆账号或改设计
  • 列级权限与表级权限叠加时行为复杂,审计要展开到列级检查

数据来源与参考

  • MySQL 8.0 Reference Manual: Access Control, Stage 2: Request Verification

相关工具

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