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