温馨提示×

ubuntu中mysql安全防护措施

小樊
47
2025-09-27 05:37:19
栏目: 云计算

1. 运行MySQL安全初始化脚本
安装MySQL后,首要步骤是执行mysql_secure_installation脚本,完成基础安全配置:设置root用户强密码(避免使用简单密码如“123456”)、删除匿名用户(防止未授权匿名访问)、禁止root用户远程登录(降低远程攻击风险)、删除默认测试数据库(避免测试数据泄露)、重新加载权限表使更改生效。这些操作能快速消除MySQL初始安装的安全隐患。

2. 强化用户权限管理

  • 避免使用root用户操作:root用户拥有最高权限,一旦泄露会导致严重后果。建议创建专用用户并授予最小必要权限(如仅授予特定数据库的读写权限),例如:CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'StrongPassword123'; GRANT SELECT, INSERT, UPDATE ON mydb.* TO 'app_user'@'localhost'; FLUSH PRIVILEGES;
  • 限制远程访问:若需远程访问,不要直接开放root用户远程登录。应创建专门的用户并限制其访问IP(如仅允许公司IP),例如:CREATE USER 'remote_user'@'192.168.1.100' IDENTIFIED BY 'RemotePass456'; GRANT ALL PRIVILEGES ON mydb.* TO 'remote_user'@'192.168.1.100'; FLUSH PRIVILEGES;

3. 修改MySQL配置文件
编辑/etc/mysql/mysql.conf.d/mysqld.cnf文件,调整以下关键参数提升安全性:

  • 绑定IP地址:将bind-address127.0.0.1(仅本地访问)改为0.0.0.0(允许远程访问)或特定IP(如192.168.1.100),根据实际需求限制访问范围;
  • 禁用远程root登录:确保skip-name-resolve参数开启(避免DNS解析延迟),并在[mysqld]部分添加skip-networking(仅本地连接)或严格限制bind-address
    修改后重启MySQL服务使配置生效:sudo systemctl restart mysql

4. 配置防火墙限制访问
使用Ubuntu自带的ufw(Uncomplicated Firewall)工具,仅允许必要的端口(如SSH的22端口、MySQL的3306端口)通过:

  • 允许MySQL端口:sudo ufw allow 3306/tcp
  • 启用防火墙:sudo ufw enable
  • 查看防火墙状态:sudo ufw status(确认仅允许信任的IP访问3306端口)。
    若需更严格的控制,可通过sudo ufw deny 3306/tcp临时关闭端口,再通过SSH反向隧道等方式访问。

5. 启用SSL/TLS加密连接
为防止数据在传输过程中被窃取或篡改,需配置MySQL使用SSL/TLS加密:

  • 安装OpenSSL:sudo apt install openssl
  • 生成SSL证书和密钥:openssl genpkey -algorithm RSA -out /etc/mysql/ssl/mysql_private.key -aes256(设置密钥密码)、openssl req -new -key /etc/mysql/ssl/mysql_private.key -out /etc/mysql/ssl/mysql_csr.csr(填写证书信息)、openssl x509 -req -days 365 -in /etc/mysql/ssl/mysql_csr.csr -signkey /etc/mysql/ssl/mysql_private.key -out /etc/mysql/ssl/mysql_certificate.crt(生成自签名证书);
  • 配置MySQL:编辑/etc/mysql/mysql.conf.d/mysqld.cnf,在[mysqld]部分添加ssl-ca=/etc/mysql/ssl/mysql_certificate.crtssl-cert=/etc/mysql/ssl/mysql_certificate.crtssl-key=/etc/mysql/ssl/mysql_private.key
  • 重启MySQL:sudo systemctl restart mysql
  • 验证加密:登录MySQL后执行SHOW VARIABLES LIKE '%ssl%';,确认have_ssl值为YES

6. 定期更新与维护

  • 更新系统和软件包:定期运行sudo apt update && sudo apt upgrade mysql-server,安装MySQL最新安全补丁,修复已知漏洞;
  • 审查用户权限:定期检查用户权限(如SELECT user, host, plugin FROM mysql.user;),删除闲置用户(如超过3个月未使用的用户)和多余权限(如用户无需删除数据库却拥有DROP权限);
  • 监控日志文件:定期查看MySQL错误日志(/var/log/mysql/error.log)和慢查询日志(若有开启),及时发现异常登录(如频繁的失败登录尝试)、未授权操作(如大量数据导出)等问题。

0