好的,我知道这个问题已经被问了很多次了,但是我已经尝试了能找到的所有建议,但仍然无法通过端口 3306 远程登录到我的 Amazon 服务器。
添加 iptables 条目以接受端口 3306 上的连接:
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
这并没有解决问题,所以我关闭了防火墙
ufw disable
- 在 Amazon AWS 上为我的特定服务器的安全组部分中的任何位置添加 3306。(相关行:MYSQL TCP 3306 0.0.0.0/0)
- 将 bind-address 更改为
0.0.0.0
inmy.cnf
并确保端口为 3306
还是没运气。还有其他原因导致端口 3306 被阻止吗?为什么我无法使用 telnet 连接?(当然我的目的是远程连接 mysql)以下是netstat -lnptu
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 16883/mysqld
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 932/sshd
tcp6 0 0 :::80 :::* LISTEN 14030/apache2
tcp6 0 0 :::22 :::* LISTEN 932/sshd
udp 0 0 0.0.0.0:68 0.0.0.0:* 512/dhclient
udp 0 0 0.0.0.0:29313 0.0.0.0:* 512/dhclient
udp6 0 0 :::28486 :::* 512/dhclient
答案1
事实证明,ufw disable 并没有真正关闭 iptables 规则。我的 iptables 中有以下行:
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
这使得附加的 ACCEPT 行不会被忽略。我iptables -I INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
使用 -I 而不是 -A 添加该行,这样就成功了。
最后的iptables -L
效果是:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:mysql
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:http
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere tcp dpt:mysql
ACCEPT tcp -- anywhere anywhere tcp dpt:mysql
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination