0.0.0.0(..."/>

mysql如何启用防火墙限制访问_mysql网络安全配置

11次阅读

应限制 MySQL 监听地址为 127.0.0.1 或指定内网 IP,配合 iptables/ufw/firewalld 防火墙控制 3306 端口访问,严格创建最小权限专用账号并禁用 root@’%’,必要时启用 SSL 加密连接。

mysql 如何启用防火墙限制访问_mysql 网络安全配置

限制 MySQL 监听地址

默认情况下,MySQL 可能绑定到 red”>0.0.0.0(所有网卡),对外暴露 端口 。应修改 配置文件 my.cnfmysqld.cnf中的 bind-address 参数,仅允许本地或指定内网 IP 访问:

  • 仅本机访问:bind-address = 127.0.0.1
  • 仅内网某段访问:bind-address = 192.168.1.100(需确保该 IP 已配置在服务器上)
  • 重启服务生效:sudo systemctl restart mysqlsudo 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 用户与权限

防火墙是外层屏障,数据库账户本身必须最小权限化:

  • 禁止使用 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
text=ZqhQzanResources