Linux和Debian用iptables实现允许指定IP远程连接Mysql

希望服务器之间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

去打赏

您的支持将鼓励我们继续创作!

[微信] 扫描二维码打赏

[支付宝] 扫描二维码打赏

发表评论