MariaDB Linux 版防火墙配置指南
一、准备与确认
netstat -antlpe | grep 3306 或 ss -lntp | grep 3306 查看监听状态。若未监听,请先启动服务:systemctl start mariadb 并设置开机自启:systemctl enable mariadb。同时,MariaDB 的主配置文件通常为 /etc/my.cnf(或 /etc/my.cnf.d/mariadb-server.cnf),数据目录为 /var/lib/mysql。以上信息有助于判断是防火墙问题还是服务未监听问题。二、使用 firewalld 放行 MariaDB 端口(推荐)
firewall-cmd --statesystemctl start|stop|restart firewalldsystemctl enable|disable firewalldfirewall-cmd --zone=public --add-port=3306/tcp --permanentfirewall-cmd --reloadfirewall-cmd --list-ports 或 firewall-cmd --query-port=3306/tcpfirewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="3306" accept' && firewall-cmd --reloadfirewall-cmd --new-zone=mariadb_access --permanent && firewall-cmd --reload;随后 firewall-cmd --zone=mariadb_access --add-source=192.168.1.100 --permanent、firewall-cmd --zone=mariadb_access --add-port=3306/tcp --permanent 并 firewall-cmd --reload。以上命令按需替换为你实际的客户端 IP 与 端口。三、使用 iptables 放行 MariaDB 端口(旧系统或无 firewalld 时)
iptables -A INPUT -p tcp -m tcp --dport 3306 -j ACCEPTiptables -A INPUT -p tcp -s 192.168.1.100 -m tcp --dport 3306 -j ACCEPTservice iptables save 或 iptables-save > /etc/sysconfig/iptablesservice iptables restartiptables -L -n | grep 3306。注意规则顺序,避免被后续拒绝规则拦截。四、远程连接仍失败时的排查要点
mysql -uroot -pGRANT ALL PRIVILEGES ON *.* TO 'username'@'192.168.1.100' IDENTIFIED BY 'password';(生产环境建议最小权限与专用账户)FLUSH PRIVILEGES;bind-address 不是仅 127.0.0.1。需要远程访问时可设为 0.0.0.0(或注释该行以使用默认),然后重启 MariaDB:systemctl restart mariadb。mysql -h <服务器IP> -P 3306 -u <用户> -p。若仍不通,复核防火墙规则与云厂商安全组是否放行 3306/tcp。