连接MySQL报错 Can't connect to MySQL server on ‘ip' (60)

使用第三方软件远程连接Linux上的mysql,MySQL已经添加了 hostname 为 % 的权限用户,用 Sequer pro 连接MySQL,一直失败。

错误提示如下:

Can't connect to MySQL server on'ip'(60)

MySQL权限没问题,用户名和密码也都正确,应该是iptables防火墙的问题。

登录服务器,执行如下命令查看一下 iptables

sudo iptables -L

返回如下信息:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https
DROP       tcp  --  anywhere             anywhere             tcp dpt:mysql
ACCEPT     icmp --  anywhere             anywhere             icmp echo-request

可以看到其中有一条 mysql 访问的 DROP 规则,需要删除这条规则,于是先对iptables命令加个序列号参数:

sudo iptables -L -n --line-number

返回:

Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
2    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
3    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22
4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80
5    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:443
6    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:3306
7    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0            icmptype 8

接着可以根据序号直接来删除第6条即可。

sudo iptables -D INPUT 6

最后需要重启一下MySQL或者直接 lnmp restart。


扫描二维码,在手机上阅读!
发表新评论