电脑疯子技术论坛|电脑极客社区

微信扫一扫 分享朋友圈

已有 2041 人浏览分享

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

[复制链接]
2041 0
本帖最后由 zhaorong 于 2020-8-7 18:23 编辑

这篇文章主要介绍了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,如图:

2020080315373227.png

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

228.png

综上可以看出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配置文件 发现了一句话 如图:

29.png

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

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

28.png

没有 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如图:

2020080315373231.png

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

27.png

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

26.png

开心吗 终于改过来了 不得不吐槽一下MySQL 不光得看它配置文件中的配置 连配置文件里的注释
我们也不能忽略 啧啧啧 我也是够服气的~~长记性了!
然而端口检测这一步还没有完 MySQL配置文件我们检测完了 还有一个地方 防火墙3306端口是否开启;

防火墙检测:

查看:iptable --list
我查了一下 我的防火墙没有开启 如果有防火墙要开启防火墙3306端口 或者直接关闭防火墙;
到现在为止 3306端口检测就没有问题了。

3.mysql用户访问权限:

进入mysql数据库:mysql -uroot -p
use mysql;
查询用户访问权限:
select host,user from user;如图:

9.png

mysql建用户时会指定一个host,默认是127.0.0.1localhost只能本机访问 其他机器用这个用户账号访问时会提示
没有权限将host改为%表示允许所有机器访问  我这里已经改成允许所有机器访问了
修改的语句为:grant all on . to root'@'%' identified by root用户的密码' with grant option;
flush privileges;

还有一个值得注意的地方是:要删除多余的用户就拿我自己来说 我之前有两个root用户,如下:
user host
root %
root 127.0.0.1
这个时候为了避免出错 就可以把127.0.0.1的那个root用户删除掉了 我这里就掉进坑里了 我是在修改密码的
时候掉这个坑里了修改的是%的root的密码 结果我一直用127.0.0.1的root登录 一直登不上去,,,;

总结

综上所述 mysql设置远程访问的问题就解决了 总结一下 mysql设置远程访问主要从以下三个方面去检测 首先检查网络
两台计算机之间必须能ping通 这是基础;第二:检测3306端口 对于端口只允许本机访问 有两个地方启用 一个是mysql
配置绑定本机地址 修改mysql配置文件 友情提示不一定是my.cnf哦~要仔细阅读配置文件中的内容~ bind-address=
0.0.0.0另一个就是防火墙启用3306(检测防火墙);第三:mysql用户访问权限的问题。

这是我曾经踩过的坑 觉得值得一记 所谓的经验 不过是踩过的坑多了 遇见的问题多了 然后解决了 从坑里跳出去了
经验也就有了 积累经验 从自己踩过的每一个坑开始 然后不断的提升自己 加油!
到此这篇关于Navicat出现无法远程连接MySql服务器问题的解决办法的文章就介绍到这了。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

关注

0

粉丝

9021

主题
精彩推荐
热门资讯
网友晒图
图文推荐

Powered by Pcgho! X3.4

© 2008-2022 Pcgho Inc.