Mysql 无法通过公共IP连接数据库

Mysql 无法通过公共IP连接数据库,mysql,ubuntu,Mysql,Ubuntu,注意。操作系统是ubuntu 14* 我在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 = 1

注意。操作系统是ubuntu 14*

我在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
我注释了绑定地址,这应该将地址绑定到0.0.0.0。我还尝试将绑定地址设置为0.0.0.0。这也不起作用

ufw status
Status: inactive
我的主机文件设置如下:

    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用户授予了所有正确的权限。我可以从外部和内部联系。但我不可能在内部连接到我的公共ip

我还试图用netstat找到一个解决方案

netstat -tln 
给我

tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN
编辑:刚刚禁用了UFW。它仍然不起作用

ufw status
Status: inactive
EDIT2:mysql是否可能忽略了/etc/hosts文件


有人能帮我进一步提出一些解决问题的好主意吗。

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

iptables -n -L 
如果有规则,阻塞端口3306,删除它们,或者使用

iptables -F
还可以使用netstat检查服务器是否正在侦听外部ip:

netstat -tupan |grep :3306

可能是防火墙造成了问题?打开防火墙上的端口:
sudo-ufw-allow 3306/tcp
sudo-service-ufw-restart
老实说,你不想让你的MySQL端口在微风中飘动,让任何人来戳它。它不如ssh那么安全,并且经常成为驱动式攻击的目标,甚至是DDOS类型的攻击。如果您不能使用VPN或SSH隧道,请列出一个限制性很强的白名单,列出可以连接的用户。我暂时禁用了ufw。当我试图通过我的公共ip连接时,仍然会遇到问题。我还可以在服务器上完全打开mysql的端口。因为在我的服务器和坏的互联网之间有一个独立的防火墙。(我知道这不是最干净的方式)Ubuntu有
ufw
,任何忽视这一点的答案都是用丑陋、艰难的方式来做的。我检查了这个。还刷新了我的iptables。问题不在这些地方。我在我的帖子中添加了netstat一行。“tcp 0.0.0.0:3306 0.0.0.0:*LISTEN 19999/mysqld”当您
nmap YOUR-EXTERNAL-IP-p3306-Pn时会发生什么?若它给你们“过滤”,它可能是你们通往外部IP的路上的某个地方的防火墙。