CentOS7下navicat连接mysql的时候出现问题:2003-Can't connect to MySQL server on '192.168.3.253' (10038)

使用CentOS的过程中,安装了MySQL8,准备使用Navicat连接,发现无法成功!最后解决办法如下:

1、 确保连接的用户有权限,附上新增用户的sql:

CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

grant all on *.* to 'root'@'%';

flush privileges;

2、 打开Navicat,创建访问MySQL的连接,出现如题报错的原因是:centos7的防火墙firewall在捣鬼!

关闭firewall查看是否起作用,命令如下:

systemctl stop firewalld.service //停止firewall

firewall-cmd --state    //查看默认防火墙状态(关闭后显示notrunning,开启后显示running)

systemctl disable firewalld.service //禁止firewall开机启动(最好设置一下,否则服务器重启又会限制连接)

惊喜的发现,可以正常连接;但是没有防火墙不安全,心里会忐忑。所以我们需要换个防火墙!

3、 使用iptables防火墙

1)配置iptables防火墙

service iptables status //先检查是否安装了iptables

yum install -y iptables //安装iptables

yum update iptables  //升级iptables

yum install iptables-services //安装iptables-services

2)编辑iptables防火墙配置文件

vi /etc/sysconfig/iptables

修改后的配置文件如下:

# sampleconfiguration for iptables service

# you can edit thismanually or use system-config-firewall

# please do not askus to add additional ports/services to this default configuration

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT[0:0]

:OUTPUT ACCEPT[0:0]

-A INPUT -m state--state RELATED,ESTABLISHED -j ACCEPT

-A INPUT -p icmp -jACCEPT

-A INPUT -i lo -jACCEPT

-A INPUT -p tcp -mstate --state NEW -m tcp --dport 22 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 –j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT

-A INPUT -j REJECT--reject-with icmp-host-prohibited

-A FORWARD -jREJECT --reject-with icmp-host-prohibited

COMMIT

注意:红字部分就是需要添加的地方,简单说你想要的放开哪些端口,就写哪些端口。比如我使用Django项目配置MySQL数据库,默认的端口是3306,所以我添加了3306这个端口。

3)保存退出配置文件

4)配置iptables服务

systemctl restart iptables.service #最后重启防火墙使配置生效

systemctl enable iptables.service #设置防火墙开机启动

systemctl status iptables.service #查看防火墙状态

systemctl stopiptables.service #关闭防火墙

4、 再次使用Navicat链接MySQL,成功!

你可能感兴趣的:(CentOS)