Navicat出现无法远程连接MySql服务器问题的解决办法

Navicat无法远程连接MySql服务器问题的解决方法写在前面:

操作系统:中标麒麟4.0;
数据库:MySQL5.7.26;
JDK:采用中标麒麟系统自带的openjdk;
客户端工具:Navicat;

前置条件:
MySQL服务安装完毕;

情景:

安装好mysql,本地访问正常,但同一个局域网内的机器都无法访问该服务器上的mysql数据库;

原因:

mysql默认是不可以通过远程机器访问的,只允许本地访问,通过下面的配置可以开启远程访问;

排查思路:

mysql设置远程访问主要从以下三个方面去检测:首先检查网络,两台计算机之间必须能ping通,这是基础;第二:检测3306端口,对于端口只允许本机访问,有两个地方启用,一个是mysql配置绑定本机地址,另一个就是防火墙启用3306;第三:mysql用户访问权限的问题。

根据思路逐一排查

1.网络检测:

ping mysql所在主机的ip地址
看是否能ping通,如果能ping通,说明不是网络的问题;
我的可以ping通,说明不是网络的问题;

2.端口检测:

检测3306端口:
netstat -ntpl | grep 3306,如图:

在这里插入图片描述

检测22端口:
netstat -ntpl | grep 22,如图:

在这里插入图片描述

综上可以看出22端口监听所有地址,而3306端口只监听了本地地址,所以远程无法访问。对于端口只允许本机访问,有两个地方启用,一个是防火墙启用3306,另一个就是mysql配置绑定本机地址。所以Navicat无法连接远程MySQL这个问题我们找到问题所在了,我们只需将3306端口允许远程访问即可;

解决办法:
一般情况下,我们只需要去修改/etc/mysql/my.cnf配置文件即可,将my.cnf配置文件中的bind-address=127.0.0.1改成bind-address=0.0.0.0,并且把skip-networking注释掉即可;

但是我的my.cnf配置文件中并没有bind-address=127.0.0.1和skip-networking这两行代码,我就自己加上了bind-address=0.0.0.0这行代码,以为会好使,重启系统后,结果,并没有卵用!!!再次检测3306端口,发现还是只允许本地访问,就在我百思不得其解的时候,配置文件中的一句注释引起了我的注意~此处有惊喜,问题马上就可以解决了 > . <

然后我们再去看/etc/mysql/my.cnf配置文件,发现了一句话,如图:

在这里插入图片描述

“从以下配置目录导入所有的以.cnf结尾的文件”,啧啧啧,有没有种恍然大悟的感觉?也就是说address=127.0.0.1这行配置没有在my.cnf配置文件中配置,可能在那两个目录下的某一个配置文件中配置了,所以我们就去找找看看呗,无论如何得把“address=127.0.0.1”这行代码找到。

首先去第一个目录:/etc/mysql/conf.d,进去看一下cnf.d文件,如图:

在这里插入图片描述

没有“address=127.0.0.1”;

再去第二个目录中:/etc/mysql/mariadb.conf.d/,发现下面有5个以.cnf结尾的文件,分别是:50-client.cnf , 50-mysql-clients.cnf , 50-mysqld_safe.cnf , 50-server.cnf , my.cnf,如图:

在这里插入图片描述

用脑子猜一下,你也知道该去看哪个文件了,没错,我锁定了“50-server.cnf”文件,进去一看,果然找到了“address=127.0.0.1”这行代码,把它改成“address=0.0.0.0”即可,如图:

在这里插入图片描述

然后重启计算机(注意这里必须要重启计算机,重启mysql没用,我重启mysql是没用),再查看端口,如下:

Navicat出现无法远程连接MySql服务器问题的解决办法

扫一扫手机访问