无法通过 Rackspace 实例上的 3306 端口 (MySQL) 连接到 Ubuntu

无法通过 Rackspace 实例上的 3306 端口 (MySQL) 连接到 Ubuntu

我尝试连接到 Ubuntu 机器上的端口 3306,但无法连接。当我连接时,iptables -L -n | grep 3306我看到了以下内容:

ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:3306 
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:3306 

所以看起来我应该能够连接。

我应该寻找哪些规则来撤消这些?我粗略地看了一眼,没有看到任何规则。另外,当我这样做时,grep 80grep 443看到的内容与上面的内容几乎相同,但使用 80 和 443 而不是 3306。即使无法连接到端口 3306,我也可以连接到端口 80 和 443。

网络服务器托管在 Rackspace 的云上。我知道 AWS 有独立于操作系统的额外防火墙规则可以设置 - Rackspace 有吗?我在菜单中找不到任何规则,我的 Google 搜索也没有结果。

答案1

一般来说,你应该考虑 1) MySQL 绑定地址,以及 2) 防火墙。
由于你无法与 建立连接telnet SERVER_IP 3306防火墙阻止了连接,或者 MySQL 没有监听该端口

防火墙

您应该将防火墙规则作为一个整体进行检查,而不通过管道传输到 grep,以查看是否有任何匹配的规则多于您在问题中粘贴的那个。
关于防火墙的话题,向公共互联网开放 :3306 通常是一个坏主意™。我更喜欢使用SSH 隧道连接到我的远程数据库。

MySQL 绑定地址

在您的 MySQL 配置中查找“bind_address”,或者尝试netstat -plnt在列表中查找 MySQL。要接受远程连接,bind_address 必须是“127.0.0.1”以外的其他地址(SSH 隧道可解决这个问题!)。

答案2

我的解决方案是重新安装 ufw。

apt purge ufw
apt install ufw

然后添加端口3306。

答案3

我不用 ipbles,虽然它是一个系统管理器,但你需要知道,但必须非常小心,如何使用防火墙 ufw 。如果你已经拥有它,我建议你卸载防火墙:sudo apt-get ufw remove 然后重启服务器并清除所有现有的 iptables。认为它的iptables -F ** then reinstall ufw then open port 3306. **sudo ufw 允许 3306/协议` 这将打开端口。如果你仍然可以通过 telnet 连接,那么你需要检查你的 MySQL 绑定地址

相关内容