MySQL权限系统基于“用户名+主机名”身份认证,分全局、数据库、表、列四级授权,权限存于mysql库各表并内存缓存,含管理类与操作类权限,部分具隐含继承性。

MySQL权限系统是一套基于身份验证与操作授权的访问控制机制,核心目标是确保只有被明确允许的用户,才能在指定范围内执行特定数据库操作。
用户身份由“用户名+主机名”共同决定
同一个用户名从不同主机连接,会被视为完全不同的账户。例如:
- 'appuser'@'192.168.10.5' 和 'appuser'@'localhost' 是两个独立账户
- 可以为它们设置不同密码、不同权限、甚至一个启用一个锁定
- 通配符 '%' 表示任意主机(不包括 localhost),若需覆盖本地连接,需额外显式创建 'user'@'localhost'
权限按作用范围分四个层级
权限不是笼统赋予的,而是严格绑定到具体作用域,从宽到细依次为:
PHPSCUP是一套追求简洁易用很务实的系统!PHPSCUP能满足大多数的初级企业网站用户。系统内置企业简介模块、新闻模块、产品模块、人才模块、在线留言模块、单篇文章模块、友情链接模块、单篇文章模块、图片轮播模块、下载模块。遵循SEO标准,通过模板或者定制为企业提供专业的营销型网站,该系统采用PHP+MySQL组合开发,具备安全、高效、稳定等基本特性。主要功能特色体现在:权限分配:权限分配功能非常
-
全局层级(*.*):影响整个 MySQL 实例,如
CREATE USER、SHUTDOWN、RELOAD -
数据库层级(db_name.*):仅对该数据库内所有对象生效,如
CREATE、DROP、ALTER数据库或其中表 -
表层级(db_name.table_name):控制对某张表的
SELECT、INSERT、UPDATE、DELETE等操作 - 列层级(db_name.table_name.column_name):精细到某列的读写,常用于敏感字段隔离(如身份证号、密码哈希)
权限存储与生效机制
所有权限规则都持久化保存在 mysql 系统库 的多张权限表中,包括:
-
user:记录全局权限和账户属性(密码、过期、锁定状态) -
db:记录数据库级权限 -
tables_priv和columns_priv:分别管理表级和列级权限 - 服务启动时一次性加载进内存,后续权限检查均基于内存副本进行
- 修改权限后无需重启,但执行
FLUSH PRIVILEGES可强制重载(一般仅在直接更新权限表后需要)
权限类型分为管理类与操作类
并非所有权限都用于数据操作:
-
管理类权限:如
SUPER、REPLICATION CLIENT、PROCESS,用于运维与系统控制 -
操作类权限:如
SELECT、INSERT、EXECUTE(调用存储过程),面向业务逻辑 - 部分权限具有隐含继承性 —— 比如授予
CREATE权限到某个数据库,也自动包含在该库中建表的能力;但不会自动获得建库本身权限,除非显式授予CREATE DATABASE









