MySQL的安全体系建立在精细的访问控制和账号管理机制上。本文基于MySQL 9.3官方文档,深入解析其核心原理、关键技术、实用技巧和行业最佳实践。
一、访问控制核心原理:双重验证机制
-
连接验证 (Connection Verification)
- 客户端发起连接时,MySQL依据
user_name@host_name
组合进行身份验证 - 验证信息存储在
mysql.user
系统表中(用户名、主机名、认证插件、凭证哈希值) - 主机名支持通配符(
%
匹配任意字符,_
匹配单个字符)和子网掩码表示法(192.168.1.0/255.255.255.0
) - 匹配规则:先精确匹配,后通配符匹配(主机名优先于用户名通配)
- 客户端发起连接时,MySQL依据
-
请求验证 (Request Verification)
- 连接建立后,用户执行的每个操作(语句)都需进行权限检查
- 系统通过
mysql.db
,mysql.tables_priv
,mysql.columns_priv
,mysql.procs_priv
,mysql.global_grants
等表验证权限 - 权限计算逻辑:全局权限
OR
数据库权限OR
表权限OR
列权限
二、账号管理核心技术
-
账号创建与基础管理
CREATE USER
:创建用户账户,指定认证方式(IDENTIFIED WITH plugin_name BY 'password'
/IDENTIFIED BY 'password'
)和密码策略(PASSWORD EXPIRE
,PASSWORD HISTORY
等)ALTER USER
:修改用户属性(密码、认证插件、锁定状态、资源限制、MFA设置)DROP USER
:删除用户(级联删除其权限)RENAME USER
:安全地修改用户名
-
权限授予与回收
GRANT
:授予权限(支持细化到列/存储程序)- 全局权限:
GRANT SELECT ON *.* TO user
- 数据库权限:
GRANT INSERT ON db_name.* TO user
</
- 全局权限: