MySQL安全加固
字数 1744 2025-08-22 12:23:13
MySQL安全加固教学文档
1. 实验目的
通过本实验掌握并实现MySQL基础加固。
2. 知识点
2.1 validate_password插件
validate_password插件是MySQL 5.6以后引入的密码校验插件,用于管理用户密码长度、强度等。
2.1.1 插件安装与查看
-- 查看当前插件信息
show plugins;
-- 安装插件(Windows系统)
install plugin validate_password soname 'validate_password.dll';
-- 查看密码规则强度
SELECT @@validate_password_policy;
-- 查看密码策略具体信息
SHOW VARIABLES LIKE 'validate_password%';
2.1.2 密码策略属性
| 属性 | 默认值 | 描述 |
|---|---|---|
| validate_password_check_user_name | OFF | 是否允许密码设置为当前用户名 |
| validate_password_dictionary_file | 空 | 字典文件路径 |
| validate_password_length | 8 | 密码最小长度 |
| validate_password_mixed_case_count | 1 | 大小写字母最小数量 |
| validate_password_number_count | 1 | 数字最小数量 |
| validate_password_policy | MEDIUM | 密码强度等级 |
| validate_password_special_char_count | 1 | 特殊字符最小数量 |
2.1.3 密码强度等级
| 策略值 | 强度 | 检查内容 |
|---|---|---|
| 0/LOW | 低 | 只检查长度 |
| 1/MEDIUM | 中 | 检查长度、数字、大小写、特殊字符 |
| 2/STRONG | 高 | 检查长度、数字、大小写、特殊字符、字典文件 |
2.2 MySQL用户权限
2.2.1 基本权限
- alter: 修改表结构和索引
- create: 创建数据库或表
- delete: 删除表记录
- drop: 删除表或数据库
- index: 建立或删除索引
- insert: 增加表记录
- select: 查询表记录
- update: 修改表记录
2.2.2 特殊权限
- ALL: 所有权限
- USAGE: 仅允许登录
2.3 MySQL授权命令
2.3.1 授权格式
GRANT privileges ON database.table TO 'username'@'host' [WITH GRANT OPTION];
2.3.2 撤销权限
REVOKE privileges ON database.table FROM '用户名'@'主机';
2.3.3 授权原则
- 最小权限原则
- 限制登录主机
- 删除无密码用户
- 设置复杂密码
- 定期清理用户
2.4 Windows普通用户运行MySQL服务
避免使用System权限运行MySQL服务,应创建普通用户并配置相应权限。
2.5 数据库备份
使用mysqldump进行逻辑备份:
mysqldump [选项] 数据库名 [表名] > 脚本名
常用选项:
- --host/-h: 服务器IP
- --port/-P: 服务器端口
- --user/-u: MySQL用户名
- --password/-p: MySQL密码
- --databases: 指定备份数据库
- --all-databases: 备份所有数据库
3. 实验步骤
3.1 口令加固
- 安装validate_password插件
- 查看并配置密码策略
- 测试创建弱口令用户是否被阻止
3.2 账户配置
- 检查并删除匿名账户
- 删除无关账户
- 修改默认root用户名
3.3 权限与访问控制
- 查看用户权限
- 授予最小必要权限
- 限制连接数
- 配置Windows普通用户运行MySQL服务
3.4 日志审核
- 安装MariaDB Audit Plugin
- 配置审计参数
- 验证审计功能
3.5 备份
- 手动备份数据库
- 配置自动备份计划任务
3.6 补丁
- 升级到最新小版本
- 注意兼容性问题
4. 实验结果验证
- 确认无匿名用户
- 无法创建弱口令用户
- 数据库操作被记录
- 服务以普通用户身份运行
- 备份功能正常
5. 最佳实践建议
- 定期审计用户权限
- 实施最小权限原则
- 启用密码复杂度检查
- 配置操作审计日志
- 建立定期备份机制
- 保持MySQL版本更新
6. 常见问题解决
- 插件安装失败:检查插件文件路径和权限
- 审计日志不记录:检查server_audit_logging参数
- 备份失败:检查用户权限和存储空间
- 服务启动失败:检查日志文件定位问题
通过以上步骤和配置,可以显著提高MySQL数据库的安全性,降低被攻击的风险。