我有一个在 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
您列出的服务器应该能够连接。