2017-01-03 56 views
0

注意。操作系统是Ubuntu 14. *数据库不能通过公共IP连接

我在我的MYSQL服务器上打破了我的头。我尝试通过公共IP连接到我的MYSQL服务器内部。但我无法连接。虽然我能够连接当我连接到本地主机,当我连接外部。

# Instead of skip-networking the default is now to listen only on 
# localhost which is more compatible and is not less secure. 
#bind-address   = 127.0.0.1 

我评论了bind-address,这应该将地址绑定到0.0.0.0。我也尝试将绑定地址设置为0.0.0.0。这也不起作用。

我的主机文件设置,如下所示:

127.0.0.1 MY-IP 

当我在端口80 telnet到我的公网IP是没有问题的。

telnet MY-IP 80 

我得到:

Trying MY-IP... 
Connected to MY-IP. 
Escape character is '^]'. 

但是当我尝试这个端口3306它不断:

Trying MY-IP... 

我还授予了所有正确的权限,以我的MySQL用户。我可以连接externaly和internaly。但是我不可能把我的公共IP连接到内部。

另外我试图找到一个解决方案与netstat。

netstat -tln 

给MES

tcp  0  0 0.0.0.0:3306   0.0.0.0:*    LISTEN 

编辑:只是禁用UFW。它仍然无法正常工作。

ufw status 
Status: inactive 

编辑2:是否有可能mysql忽略/ etc/hosts文件?

有人可以帮助我进一步了解问题的一些好点子。

+1

可能是防火墙产生的问题?打开防火墙上的端口:'sudo ufw allow 3306/tcp'和'sudo service ufw restart' –

+2

老实说,你不希望你的MySQL端口在微风轻拂,任何人都可以嘲笑。它不像'ssh'那样安全,并且通常是驱动式攻击的目标,甚至是DDOS类型。如果您不能使用VPN或SSH隧道,请对谁可以连接进行限制性白名单。 – tadman

+0

我现在无法解决问题。当我尝试通过公共IP进行连接时仍然会出现问题。另外我可以在服务器上完全打开mysql的端口。因为我的服务器和坏的互联网之间有单独的防火墙。 (我知道这不是最干净的方法) – Berend

回答

0

您应该将绑定地址更改为0.0.0.0,然后重新启动mysqld。另外,还要确保没有启用防火墙:

iptables -n -L 

如果有规则,阻止端口3306,删除它们,或只是

iptables -F 

也用netstat来检查服务器是否禁用firwall听外部IP:

netstat -tupan |grep :3306 
+0

Ubuntu有'ufw',任何忽略这个问题的答案都是以丑陋的方式实现的。 – tadman

+0

我检查了这个。还冲我的iptables。不知何故,这个问题不在这些地方。我将netstat的行添加到了我的帖子中。 “tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 19999/mysqld” – Berend

+0

当你映射YOUR-EXTERNAL-IP -p3306 -Pn'时会发生什么?如果它给你“过滤”,它可能是通往你的外部IP的途中的防火墙。 –