温馨提示×

MySQL数据库如何进行安全加固

小樊
40
2025-12-06 04:20:33
栏目: 云计算

MySQL数据库安全加固清单

一 操作系统与文件系统

  • 使用专用服务器/最小权限系统账号运行 mysqld,避免使用 root/Administrator;为 mysql 系统账号设置不可登录 shell(如:usermod -s /sbin/nologin mysql)。
  • my.cnf/my.ini 等配置文件权限收紧为仅属主可读写(如:chmod 600),并放置在受控目录(如:/etc/mysql/conf.d/)。
  • 数据目录 datadir、日志文件、socket 放在非系统分区,权限最小化:datadir 建议 700 且属主为 mysql:mysql;socket 放入 datadir 并限制访问。
  • 清理或屏蔽敏感痕迹:删除或软链 ~/.mysql_history,禁止 MYSQL_PWD 环境变量。
  • 关闭不必要的端口与服务,仅开放 3306(或变更为非默认端口)并限制来源。
  • 不要将数据库与日志放在系统分区(如 //var/usr)。

二 MySQL实例与配置基线

  • 运行 mysql_secure_installation:启用密码强度校验(VALIDATE PASSWORD)、修改 root 密码、删除匿名用户、禁止 root 远程登录、删除 test 库、重载权限。
  • 关键参数建议:
    • 禁用本地文件读取:set global local_infile=0
    • 绑定管理网段:set global bind-address=127.0.0.1(仅本机)或指定内网地址;
    • 提升解析安全与性能:set global skip-name-resolve=1
    • 限制连接滥用:设置合理 max_connections
    • 禁止跳过权限校验:确保未启用 skip-grant-tables
    • 关闭符号链接:set global symbolic-links=0
    • 审计与合规:启用 错误日志 log-error,确保未开启 log-raw(避免明文密码记入日志)。
  • 备份与恢复:定期使用 mysqldump 全量/增量备份,并定期恢复演练验证可用性。

三 账号与权限治理

  • 遵循最小权限原则:按库/表/列授予所需权限,避免 GRANT ALL;定期回收不再使用的账号与权限。
  • 规范账户与来源:删除或收紧 匿名用户通配符主机(%) 的访问;为应用创建专用账号并限定来源 IP。
  • 安全连接要求:对敏感账户强制 SSL/TLS,如:GRANT … TO ‘u’@‘h’ REQUIRE SSL;客户端连接时配置 ssl_ca/ssl_cert/ssl_key
  • 限制高危权限:非管理员账户禁用 FILE、SUPER、SHUTDOWN、CREATE USER 等;必要时以角色统一管理权限并定期审计。
  • 密码与认证:启用 validate_password 强度策略;在 MySQL 8.0 可优先采用更安全的 caching_sha2_passwordsha256_password 认证插件。

四 网络安全与加密

  • 网络最小化暴露:通过 防火墙/安全组 仅允许应用服务器访问 3306;跨信任域或公网链路强制 SSL/TLS 加密传输。
  • 监听与端口:生产环境建议 bind-address 绑定内网地址;如变更默认 3306,需同步更新防火墙与安全组规则。
  • 传输中加密:为账户与客户端启用 REQUIRE SSL,并在客户端设置 ssl_ca/ssl_cert/ssl_key 参数。
  • 静态数据加密:在 MySQL 8.0 可使用 InnoDB 表空间/redo/undo 加密二进制日志加密;对备份文件与落盘数据实施静态加密与访问控制。

五 审计监控与持续运维

  • 日志体系:启用并轮转 错误日志、通用查询日志、慢查询日志、二进制日志;对关键业务表或敏感操作建立审计能力(企业版可使用审计插件,或结合通用日志/第三方审计方案)。
  • 监控与告警:持续监控错误日志与慢查询,设置异常连接/失败登录告警;定期分析 binlog 与审计记录。
  • 补丁与版本:及时升级 MySQL 修复安全漏洞;定期进行漏洞扫描与安全基线核查。
  • 备份策略:制定全量+增量备份与异地/多活策略,定期恢复演练并验证一致性。

0