MySQL 的权限控制依赖系统库中的权限表。数据库会根据这些表中的内容来判断某个用户是否可以连接、访问数据库、执行某类操作。
mysql.user 表是最核心的权限表之一,主要保存用户账号的全局信息。
它通常包括:
- 用户名
- 主机来源
- 身份认证信息
- 全局权限信息
可以简单理解为:它决定“谁可以从哪里登录,以及在全局范围内拥有哪些基本权限”。
db 表主要记录用户在某个数据库级别上的权限。
例如:
- 某个用户只对
shop数据库有查询权限 - 某个用户只对
cms数据库有增删改查权限
host 表与主机匹配相关,不过在很多现代使用场景中,直接感知它的机会并不多。
当权限需要细化到表级或列级时,就会涉及这些权限表。
tables_priv:表级权限columns_priv:列级权限
适用场景例如:
- 某用户只能访问某一张表
- 某用户只能查看表中的部分字段
procs_priv 表用于记录存储过程和存储函数的相关权限。
例如:
- 谁可以执行某个存储过程
- 谁可以修改某个存储函数
权限表本质上就是 MySQL 访问控制规则的底层存储位置。日常管理中虽然更多是通过 GRANT、REVOKE 等语句操作,但理解这些权限表的职责,有助于理解权限系统整体结构。