一、系统账户与权限最小化原则
在VPS上安装MySQL后的首要任务就是重构默认账户体系。执行mysql_secure_installation
脚本会提示删除匿名账户、禁止root远程登录、移除测试数据库等基础操作。但真正的安全配置需要更精细化的处理:建议创建专属管理账户替代root,通过CREATE USER 'admin'@'localhost' IDENTIFIED BY '复杂密码'
建立新账户后,使用GRANT
语句精确分配权限。特别注意限制FILE、PROCESS和SUPER等危险权限的分配,遵循最小权限原则能有效降低SQL注入攻击风险。
二、密码策略与加密传输强制实施
MySQL 5.7+版本开始内置密码强度验证插件,在my.cnf配置文件中添加validate_password=ON
可启用8字符以上、包含大小写和特殊字符的强制要求。对于金融类应用,建议通过ALTER USER
设置密码过期策略(如90天强制更换)。同时必须启用SSL加密传输,使用mysql_ssl_rsa_setup
生成证书后,配置require_secure_transport=ON
强制所有连接走TLS协议。这能防止VPS服务器在公网环境中遭遇流量嗅探攻击。
三、网络访问控制与端口安全
默认3306端口是黑客扫描的主要目标,在VPS环境中应当修改为非常用端口。通过防火墙(如UFW或iptables)实施白名单策略,仅允许应用服务器IP访问数据库端口。在MySQL层面,使用bind-address
参数限制监听IP,避免暴露在0.0.0.0。对于必须远程管理的情况,建议通过SSH隧道连接而非直接开放端口。云服务商提供的安全组规则需要与VPS本地防火墙形成双重防护,这是公有云环境下的最佳实践。
四、审计日志与异常行为监控
企业级安全基线必须包含完整的审计功能。MySQL企业版自带审计插件,社区版可通过安装MariaDB审计插件或McAfee MySQL Audit Plugin实现。配置audit_log_format=JSON
和audit_log_policy=ALL
记录所有查询行为,特别要监控权限变更、数据导出等敏感操作。结合VPS的syslog服务将日志异地存储,使用Fail2Ban分析登录失败日志并自动封禁恶意IP。对于高频查询的监控,可设置slow_query_log
捕获执行时间超过阈值的SQL语句。
五、数据加密与自动备份策略
即使获得数据库文件也无法读取明文数据——这是安全基线的黄金标准。MySQL的表空间加密功能(通过keyring_file
插件实现)可对敏感表格实施AES-256加密。对于全库保护,建议在VPS磁盘层面使用LUKS加密。备份环节需特别注意:加密后的备份文件才能传输到远程存储,使用mysqldump
时添加--ssl
参数确保传输安全。自动化脚本中绝对不要明文存储数据库密码,推荐使用Vault等密钥管理系统。
六、定期漏洞扫描与版本更新
MySQL官方每月发布安全公告,新购VPS服务器需立即检查SELECT @@version
确认版本号。使用OpenVAS或Nessus进行漏洞扫描,重点关注CVE列表中与认证绕过、缓冲区溢出相关的漏洞。更新策略建议:测试环境验证后,通过apt-get upgrade mysql-server
或yum update mysql-community-server
完成补丁安装。对于无法立即升级的遗留系统,要通过修改SQL模式(如sql_mode=STRICT_TRANS_TABLES
)降低注入攻击风险。