1. 运行MySQL安全初始化脚本
安装MySQL后,首要步骤是执行mysql_secure_installation脚本,完成基础安全配置:设置root用户强密码(避免使用简单密码如“123456”)、删除匿名用户(防止未授权匿名访问)、禁止root用户远程登录(降低远程攻击风险)、删除默认测试数据库(避免测试数据泄露)、重新加载权限表使更改生效。这些操作能快速消除MySQL初始安装的安全隐患。
2. 强化用户权限管理
CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'StrongPassword123'; GRANT SELECT, INSERT, UPDATE ON mydb.* TO 'app_user'@'localhost'; FLUSH PRIVILEGES;。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文件,调整以下关键参数提升安全性:
bind-address从127.0.0.1(仅本地访问)改为0.0.0.0(允许远程访问)或特定IP(如192.168.1.100),根据实际需求限制访问范围;skip-name-resolve参数开启(避免DNS解析延迟),并在[mysqld]部分添加skip-networking(仅本地连接)或严格限制bind-address。sudo systemctl restart mysql。4. 配置防火墙限制访问
使用Ubuntu自带的ufw(Uncomplicated Firewall)工具,仅允许必要的端口(如SSH的22端口、MySQL的3306端口)通过:
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加密:
sudo apt install openssl;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(生成自签名证书);/etc/mysql/mysql.conf.d/mysqld.cnf,在[mysqld]部分添加ssl-ca=/etc/mysql/ssl/mysql_certificate.crt、ssl-cert=/etc/mysql/ssl/mysql_certificate.crt、ssl-key=/etc/mysql/ssl/mysql_private.key;sudo systemctl restart 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权限);/var/log/mysql/error.log)和慢查询日志(若有开启),及时发现异常登录(如频繁的失败登录尝试)、未授权操作(如大量数据导出)等问题。