希望服务器之间mysql互联互通,但是不允许普通用户能远程访问Mysql, 那么问题来了,服务器不得不对外开放3306端口怎么设置?
尽管Mysql账号设置上可以限制IP访问,但作为安全方面考虑,应该结合Linux自身的防火墙机制(iptables)进行全面的限制,慎防某些意外事情发生。下面给出简单得命令即可实现只有指定的IP可以远程访问Mysql
使用 iptables -h 查看使用方法
iptables -A INPUT -s 127.0.0.1 -m tcp -p tcp –-dport 3306 -j ACCEPT #允许本地主机访问
iptables-A INPUT -s 允许访问的IP地址 -m tcp -p tcp –-dport 3306 -j ACCEPT #允许指定的IP访问
iptables-A INPUT -p tcp –dport 3306 -j DROP #屏蔽所有外部访问
或规则文件中添加
-A INPUT -s 127.0.0.1 -m tcp -p tcp –-dport 3306 -j ACCEPT
-A INPUT -s 允许访问的IP地址 -m tcp -p tcp –-dport 3306 -j ACCEPT
-A INPUT -p tcp –dport 3306 -j DROP
需要注意的是,Centos和Ubuntu中,关于iptables的保存上是存在差异的。具体请自行了解。
保存到规则文件iptables-save > /etc/iptables.up.rules
常用规则
还有一点 mysql 默认配置文件 my.ini
有个绑定地址是127.0.0.1 ,需要注释掉,远程才能链接,服务器才能监听远程连接
# bind-address= 127.0.0.1
————*************************——————————————————
建立系统启动加载文件/etc/network/if-pre-up.d/iptables
vi /etc/network/if-pre-up.d/iptables
输入以下内容
#!/bin/bash
/sbin/iptables-restore < /etc/iptables.up.rules
让文件具备执行权限
chmod +x /etc/network/if-pre-up.d/iptables