为什么我不能连接到我的远程MySQL服务器?

我有一个在VPS提供商中设置的星号服务器。 我需要一个本地应用程序连接到数据库来提取报告,但是我有一个只读的连接工作。

我可以看到服务器正在监听端口3306:

tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 

我创build了一个防火墙例外:

  Chain INPUT (policy ACCEPT 12 packets, 2400 bytes) num pkts bytes target prot opt in out source destination 1 7326 1439K ELASTIX_INPUT all -- * * 0.0.0.0/0 0.0.0.0/0 Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 0 0 ELASTIX_FORWARD all -- * * 0.0.0.0/0 0.0.0.0/0 Chain OUTPUT (policy ACCEPT 215M packets, 43G bytes) num pkts bytes target prot opt in out source destination 1 7280 1542K ELASTIX_OUTPUT all -- * * 0.0.0.0/0 0.0.0.0/0 Chain ELASTIX_FORWARD (1 references) num pkts bytes target prot opt in out source destination 1 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable Chain ELASTIX_INPUT (1 references) num pkts bytes target prot opt in out source destination 1 0 0 ACCEPT tcp -- * * 173.###.##.0/24 0.0.0.0/0 tcp spt:3306 dpt:3306 2 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 3 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 4 0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpts:67:68 5 22 9834 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpts:5004:5082 6 0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:4569 7 0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:5036 8 7065 1411K ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpts:10000:20000 9 0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:2727 10 0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp spt:53 11 0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:69 12 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:25 13 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:110 14 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:143 15 22 1857 ACCEPT tcp -- * * 173.##.##.0/24 0.0.0.0/0 tcp dpt:443 16 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:993 17 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:995 18 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:5222 19 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:9090 20 206 14216 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 21 3 152 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable 

我有一个只读的用户创build:

 GRANT SELECT ON *.* TO 'read_only'@'%' IDENTIFIED BY PASSWORD '******************' 

但我继续得到错误:

 Error number: 2003 Can't connect to MySQL server on '209.###.##.##' (0) 

我在这里错过了什么?

您的问题是客户端连接不会来自端口3306,而是来自随机分配的临时源端口。 删除--sport 3306和你列出的服务器应该能够连接。