【发布时间】:2020-07-21 16:56:09
【问题描述】:
我已经在互联网上进行了搜索,特别是在这里,但找不到解决我的问题的方法。
我最接近的是以下,但检查我的 iptables,它们似乎并不适用:
https://superuser.com/questions/1290353/iptables-blocking-remote-mysql-connection https://superuser.com/questions/791509/mysql-isnt-accepting-remote-connections
我有一个 STRATO 的虚拟服务器,这个东西上周被炸毁了,在经历了很多头痛和漫长的夜晚之后,我重新上线并重建了它。在它死之前,我能够使用 Navicat 远程连接到我的 MariaDb / MySQL 服务器。自重建以来,它不再起作用。
-
防火墙设置正确,可以接受来自我的 IP 的连接,拒绝来自所有其他外部的连接
-
数据库服务器也设置为接受来自我的 IP 的连接,拒绝来自其他外部的所有连接
-
数据库用户拥有连接的全部权限,并三次检查凭据
-
使用 # iptables -L -x -v -n 检查 iptables 得到以下结果:
链输入(策略 DROP 0 个数据包,0 个字节)
pkts bytes target prot opt in out source destination 947 225118 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 0 0 REJECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:!0x17/0x02 state NEW reject-with tcp-reset 156 6296 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 15 780 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8443 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8880 4 192 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 98 4096 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 1 40 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:21 3 156 ACCEPT tcp -- * * x.x.x.x 0.0.0.0/0 tcp dpt:22 0 0 ACCEPT tcp -- * * x.x.x.x 0.0.0.0/0 tcp dpt:22 14 768 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:25 1 60 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:465 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:110 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:995 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:143 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:993 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:106 15 780 ACCEPT tcp -- * * x.x.x.x 0.0.0.0/0 tcp dpt:3306 0 0 ACCEPT tcp -- * * x.x.x.x 0.0.0.0/0 tcp dpt:3306 1 40 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:3306 1 40 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:5432 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:9008 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:9080 0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:137 0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:138 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:139 423 21880 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:445 0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:1194 0 0 DROP udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:53 0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:53 4 202 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 8 code 0 297 13450 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0
(其中 x.x.x.x 是授权 IP 地址)
当我尝试使用 Navicat 登录时,我收到以下错误:
2003 - 无法连接到“xxx.xxx.xxx.xxx”上的 MySQL 服务器(10061“未知错误”)
表示网络连接被拒绝。
问题:iptables 中规则的顺序重要吗?即,DROP 是否会覆盖 ACCEPT,因为它排在第二位?
提前感谢您提供任何信息或建议!
编辑:运行 CENTOS 7(64 位)并使用 Plesk Obsidian(并通过 SSH 连接)
【问题讨论】:
-
检查
netstat -nat输出并验证 MySQL 是否确实在等待 TCP 连接。规则的顺序确实很重要,但您似乎做对了(在删除其他所有内容之前接受受信任的 IP)。 -
谢谢,问题就在这里。它只在 tcp6 上监听 127.0.0.1:3306,现在要弄清楚如何让它在 tcp 上监听 3306 端口。
-
在您的
my.cnf配置文件中搜索bind-address。 -
谢谢,这是我的下一步,今晚等客户睡着了再试试……(这是一个测试服务器)