为什么我无法连接到远程 MySQL 服务器?

为什么我无法连接到远程 MySQL 服务器?

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

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

tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN

我已经创建了防火墙例外:

 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

我创建了一个只读用户:

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

但我仍然收到错误:

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

我在这里遗漏了什么?

答案1

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

相关内容