如何配置mysql基础安全策略_mysql基础安全配置指南

MySQL 默认安全性弱,需从限制访问、最小权限、加密通信、日志审计四方面加固:修改root密码、禁用匿名用户、限制root远程访问、创建专用运维账号并授最小权限、启用密码策略与SSL加密、关闭LOCAL INFILE等危险功能、开启审计日志。

MySQL 默认安装后安全性较弱,必须手动加固。核心是限制访问、最小权限、加密通信和日志审计四个方向。

修改默认 root 密码并禁用空密码登录

安装后 root 用户常无密码或仅本地可登录,这是最大风险点。需立即设置强密码,并确认禁止匿名用户:

  • 登录 MySQL 后执行:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourStrongPass123!';
  • 删除匿名账户:DROP USER ''@'localhost';
  • 刷新权限:FLUSH PRIVILEGES;
  • 检查剩余用户:SELECT User, Host FROM mysql.user; 确保无空用户名或非必要远程 host(如 '%')

限制 root 远程访问,创建专用管理账号

root 不应从任意 IP 登录。生产环境建议只允许本地管理,远程操作使用带限制的专用账号:

  • 禁止 root 远程登录:DELETE FROM mysql.user WHERE User='root' AND Host!='localhost';
  • 新建运维账号(例如 admin_op),仅允许可信网段:CREATE USER 'admin_op'@'192.168.10.%' IDENTIFIED BY 'OpPass456!';
  • 授予最小必要权限,例如仅 SELECT/INSERT/UPDATE/DELETE + SHOW VIEW:GRANT SELECT, INSERT, UPDATE, DELETE, SHOW VIEW ON *.* TO 'admin_op'@'192.168.10.%';
  • 避免使用 GRANT ALL —— 特别是 FILE、SHUTDOWN、SUPER 等高危权限

启用强制密码策略与连接加密

防止弱口令被爆破,同时避免明文传输账号密码:

  • 在 my.cnf 的 [mysqld] 段启用密码强度校验插件:validate_password.policy=STRONG,并设最低长度:validate_password.length=12
  • 生成 SSL 证书(可自签)并配置:ssl-ca=/etc/mysql/ssl/ca.pemssl-cert=/etc/mysql/ssl/server-cert.pemssl-key=/etc/mysql/ssl/server-key.pem
  • 强制客户端使用 SSL 连接:ALTER USER 'admin_op'@'192.168.10.%' REQUIRE SSL;
  • 验证是否生效:SHOW VARIABLES LIKE '%ssl%';STATUS; 中查看 SSL 状态

关闭危险功能与启用审计日志

禁用非必要服务降低攻击面,记录关键操作便于追溯:

  • 禁用 LOCAL INFILE(防文件读取漏洞):local_infile=OFF(my.cnf 中设置)
  • 禁用符号链接支持(防路径穿越):symbolic-links=OFF
  • 开启通用查询日志或错误日志详细级别(谨慎启用通用日志,因影响性能):log_error_verbosity=3
  • 更推荐使用 MySQL Enterprise Audit 插件或 Percona Toolkit 的 pt-audit 工具做操作审计;社区版可结合 binlog + 定期审查 user 表变更