应限制MySQL监听地址为127.0.0.1或指定内网IP,配合iptables/ufw/firewalld防火墙控制3306端口访问,严格创建最小权限专用账号并禁用root@'%',必要时启用SSL加密连接。
限制MySQL监听地址默认情况下,MySQL可能绑定到
0.0.0.0
(所有网卡),对外暴露端口。应修改配置文件my.cnf或mysqld.cnf中的bind-address参数,仅允许本地或指定内网IP访问:
仅本机访问:
bind-address = 127.0.0.1
仅内网某段访问:
bind-address = 192.168.1.100(需确保该IP已配置在服务器上)
重启服务生效:
sudo systemctl restart mysql或sudo service mysqld restart使用系统防火墙控制端口访问即使MySQL只监听内网IP,也建议配合系统防火墙进一步收紧权限。以常用工具为例:iptables
(传统方式):
sudo iptables -A INPUT -p tcp --dport 3306 -s 192.168.1.0/24 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 3306 -j DROP ufw
(Ubuntu推荐):
sudo ufw allow from 192.168.1.50 to any port 3306 sudo ufw enable firewalld(CentOS/RHEL 7+):sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="3306" protocol="tcp" accept'sudo firewall-cmd --reload严格管理MySQL用户与权限防火墙是外层屏障,数据库账户本身必须最小权限化:MySQL(Linux)
MySQL 9.6.0是面向Linux平台的2026年创新版本,核心架构迎来重大革新。其将外键约束与级联操作从InnoDB引擎层上移至SQL层,确保所有数据变更均被完整记录至Binlog,彻底解决了CDC(变更数据捕获)与主从复制中的数据不一致难题。此外,该版本引入container_aware启动选项以原生适配容器环境,并对审计日志进行了组件化重构,为追求极致数据一致性与云原生体验的开发者提供了全新选择。
下载禁止使用root@'%'远程登录,删除或禁用该账号:DROP USER 'root'@'%';为应用创建专用账号,并限定来源IP:CREATE USER 'app_user'@'192.168.1.200' IDENTIFIED BY 'strong_pass';GRANT SELECT,INSERT ON mydb.* TO 'app_user'@'192.168.1.200';
及时刷新权限:
FLUSH PRIVILEGES;启用SSL加密连接(可选但推荐)
当必须开放远程访问时,强制SSL可防止明文传输密码和数据:生成或配置SSL证书后,在my.cnf
中启用:
ssl-ca = /var/lib/mysql/ca.pem ssl-cert = /var/lib/mysql/server-cert.pem ssl-key = /var/lib/mysql/server-key.pem
强制某用户走SSL:
ALTER USER 'app_user'@'192.168.1.200' REQUIRE SSL;连接时需指定:mysql -u app_user -p --ssl-mode=REQUIRED
