Navicat出现⽆法远程连接MySql服务器问题的解决办法Navicat⽆法远程连接MySql服务器问题的解决⽅法写在前⾯:
操作系统:中标麒麟4.0;
数据库:MySQL5.7.26;
JDK:采⽤中标麒麟系统⾃带的openjdk;
客户端⼯具:Navicat;
前置条件:
MySQL服务安装完毕;
多线程c语言情景:
安装好mysql,本地访问正常,但同⼀个局域⽹内的机器都⽆法访问该服务器上的mysql数据库;
原因:
mysql默认是不可以通过远程机器访问的,只允许本地访问,通过下⾯的配置可以开启远程访问;
排查思路:
c源程序的基本单位是mysql设置远程访问主要从以下三个⽅⾯去检测:⾸先检查⽹络,两台计算机之间必须能ping通,这是基础;第⼆:检测3306端⼝,对于端⼝只允许本机访问,有两个地⽅启⽤,⼀个是mysql配置绑定本机地址,另⼀个就是防⽕墙启⽤3306;第三:mysql⽤户访问权限的问题。
根据思路逐⼀排查
1.⽹络检测:
ping mysql所在主机的ip地址
看是否能ping通,如果能ping通,说明不是⽹络的问题;mysql无法连接到服务器
我的可以ping通,说明不是⽹络的问题;
2.端⼝检测:
检测3306端⼝:
bmob后端云卡密netstat -ntpl | grep 3306,如图:
检测22端⼝:
netstat -ntpl | grep 22,如图:
综上可以看出22端⼝监听所有地址,⽽3306端⼝只监听了本地地址,所以远程⽆法访问。对于端⼝只允许本机访问,有两个地⽅启⽤,⼀个是防⽕墙启⽤3306,另⼀个就是mysql配置绑定本机地址。所以Navicat⽆法连接远程MySQL这个问题我们到问题所在了,我们只需将3306端⼝允许远程访问即可;
个人简历模板免费下载excel简洁版解决办法:
⼀般情况下,我们只需要去修改/etc/mysql/myf配置⽂件即可,将myf配置⽂件中的bind-address=127.0.0.1改成bind-address=0.0.0.0,并且把skip-networking注释掉即可;
但是我的myf配置⽂件中并没有bind-address=127.0.0.1和skip-networking这两⾏代码,我就⾃⼰加上了bind-
address=0.0.0.0这⾏代码,以为会好使,重启系统后,结果,并没有卵⽤再次检测3306端⼝,发现还是只允许本地访问,就在我百思不得其解的时候,配置⽂件中的⼀句注释引起了我的注意~此处有惊喜,问题马上就可以解决了 > . <
然后我们再去看/etc/mysql/myf配置⽂件,发现了⼀句话,如图:
“从以下配置⽬录导⼊所有的以f结尾的⽂件”,啧啧啧,有没有种恍然⼤悟的感觉?也就是说address=127.0.0.1这⾏配置没有在myf配置⽂件中配置,可能在那两个⽬录下的某⼀个配置⽂件中
配置了,所以我们就去看看呗,⽆论如何得
把“address=127.0.0.1”这⾏代码到。
⾸先去第⼀个⽬录:/etc/mysql/conf.d,进去看⼀下cnf.d⽂件,如图:
没有“address=127.0.0.1”;
再去第⼆个⽬录中:/etc/f.d/,发现下⾯有5个以f结尾的⽂件,分别是:50-clientf , 50-mysql-clientsf , 50-mysqld_safef , 50-serverf , myf,如图:
⽤脑⼦猜⼀下,你也知道该去看哪个⽂件了,没错,我锁定了“50-serverf”⽂件,进去⼀看,果然到
了“address=127.0.0.1”这⾏代码,把它改成“address=0.0.0.0”即可,如图:
然后重启计算机(注意这⾥必须要重启计算机,重启mysql没⽤,我重启mysql是没⽤),再查看端⼝,如下:
开⼼吗,终于改过来了,不得不吐槽⼀下MySQL,不光得看它配置⽂件中的配置,连配置⽂件⾥的注释我们也不能忽略,啧啧
啧,我也是够服⽓的~~长记性了!
然⽽端⼝检测这⼀步还没有完,MySQL配置⽂件我们检测完了,还有⼀个地⽅,防⽕墙3306端⼝是否开启;
防⽕墙检测:
查看:iptable --list
我查了⼀下,我的防⽕墙没有开启,如果有防⽕墙要开启防⽕墙3306端⼝,或者直接关闭防⽕墙;
到现在为⽌,3306端⼝检测就没有问题了。
进⼊mysql数据库:mysql -uroot -p
use mysql;
查询⽤户访问权限:
border中的solidselect host,user from user;如图:
mysql建⽤户时会指定⼀个host,默认是127.0.0.1(localhost),只能本机访问,其他机器⽤这个⽤户账号访问时会提⽰没有权限,将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配置⽂件(友情提⽰,不⼀定是myf哦~要仔细阅读配置⽂件中的内容~)bind-

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。