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 授权原则

  1. 最小权限原则
  2. 限制登录主机
  3. 删除无密码用户
  4. 设置复杂密码
  5. 定期清理用户

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 口令加固

  1. 安装validate_password插件
  2. 查看并配置密码策略
  3. 测试创建弱口令用户是否被阻止

3.2 账户配置

  1. 检查并删除匿名账户
  2. 删除无关账户
  3. 修改默认root用户名

3.3 权限与访问控制

  1. 查看用户权限
  2. 授予最小必要权限
  3. 限制连接数
  4. 配置Windows普通用户运行MySQL服务

3.4 日志审核

  1. 安装MariaDB Audit Plugin
  2. 配置审计参数
  3. 验证审计功能

3.5 备份

  1. 手动备份数据库
  2. 配置自动备份计划任务

3.6 补丁

  1. 升级到最新小版本
  2. 注意兼容性问题

4. 实验结果验证

  1. 确认无匿名用户
  2. 无法创建弱口令用户
  3. 数据库操作被记录
  4. 服务以普通用户身份运行
  5. 备份功能正常

5. 最佳实践建议

  1. 定期审计用户权限
  2. 实施最小权限原则
  3. 启用密码复杂度检查
  4. 配置操作审计日志
  5. 建立定期备份机制
  6. 保持MySQL版本更新

6. 常见问题解决

  1. 插件安装失败:检查插件文件路径和权限
  2. 审计日志不记录:检查server_audit_logging参数
  3. 备份失败:检查用户权限和存储空间
  4. 服务启动失败:检查日志文件定位问题

通过以上步骤和配置,可以显著提高MySQL数据库的安全性,降低被攻击的风险。

MySQL安全加固教学文档 1. 实验目的 通过本实验掌握并实现MySQL基础加固。 2. 知识点 2.1 validate_ password插件 validate_ password插件是MySQL 5.6以后引入的密码校验插件,用于管理用户密码长度、强度等。 2.1.1 插件安装与查看 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 授权格式 2.3.2 撤销权限 2.3.3 授权原则 最小权限原则 限制登录主机 删除无密码用户 设置复杂密码 定期清理用户 2.4 Windows普通用户运行MySQL服务 避免使用System权限运行MySQL服务,应创建普通用户并配置相应权限。 2.5 数据库备份 使用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数据库的安全性,降低被攻击的风险。