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</
- 全局权限: