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是没用),再查看端口,如下:

开心吗,终于改过来了,不得不吐槽一下MySQL,不光得看它配置文件中的配置,连配置文件里的注释我们也不能忽略,啧啧啧,我也是够服气的~~长记性了!

然而端口检测这一步还没有完,MySQL配置文件我们检测完了,还有一个地方,防火墙3306端口是否开启;

防火墙检测:
查看:iptable --list
我查了一下,我的防火墙没有开启,如果有防火墙要开启防火墙3306端口,或者直接关闭防火墙;

到现在为止,3306端口检测就没有问题了。

3.mysql用户访问权限:

进入mysql数据库:mysql -uroot -p
use mysql;
查询用户访问权限:
select 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配置文件(友情提示,不一定是my.cnf哦~要仔细阅读配置文件中的内容~)bind-address=0.0.0.0),另一个就是防火墙启用3306(检测防火墙);第三:mysql用户访问权限的问题。

这是我曾经踩过的坑,觉得值得一记,所谓的经验,不过是踩过的坑多了,遇见的问题多了,然后解决了,从坑里跳出去了,经验也就有了,积累经验,从自己踩过的每一个坑开始,然后不断的提升自己,加油!

到此这篇关于Navicat出现无法远程连接MySql服务器问题的解决办法的文章就介绍到这了,更多相关Navicat无法远程连接MySql服务器问题内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • navicat无法远程连接mysql的解决方法

    近日在Ubuntu上安装了一个 MySQL 5.0,因为使用 phpMyAdmin 还必须安装 PHP,所以打算直接使用远程管理工具Navicat for MySQL 来连接. 在 Ubuntu 中通过 mysql 命令行创建好一个数据表并分配了权限: 复制代码 代码如下: GRANT ALL ON testdb.* TO usera IDENTIFIED BY 'passwd' 然后重启加载权限: 复制代码 代码如下: mysqladmin –uroot –p flush-privileges

  • Navicat远程连接SQL Server并转换成MySQL步骤详解

    前言 最近项目中遇到用 SQL Server的程序,以前没用过这个数据库,于是尝试将其转换为 MySQL 的格式,可是不想在本地安装 SQL Server,于是决定在一个远程的 Windows 服务器上安装,并在本地连接它,然而在实现过程中遇到了诸多问题,记录于此.方便自家或者大家在需要的时候参考借鉴,下面来一起看看吧. 环境信息 先说一下环境,服务器的系统是 Windows Server 2016 Datacenter,数据库是 SQL Server 2016 Express. 本地这面是 W

  • 解决Navicat远程连接MySQL出现 10060 unknow error的方法

    前言:今天想远程连接一下自己服务器上的MySQL,用的用的软件是Navicat,服务器上的MySQL版本为5.7 第一次连接的时候就出意外了 大概意思是 无法连接MySQL服务,解决步骤如下 第一:首先检查你的阿里或腾讯的服务器控制台是否开启3306端口访问权限,关于在哪里看,请自行百度,我的如下,可以看到,并没有允许远程连接 如果和我一样没开启,那就开启吧 开启允许所有连接后,再试试 又出错了,这次的大概意思是 拒绝访问这个MySQL服务,解决如下 第一:进入MySQL,选择MySQL数据库,

  • NaviCat连接时提示"不支持远程连接的MySql数据库"解决方法

    后来参巧网上的文献后,通过Http方式成功连上服务器的MYSql数据库.特此记录一下:首先到NaviCat官网(www.NaviCat.com.cn)上下载最新版本的NaviCat 安装完成后,打开NaviCat,如下图所示: 然后点击左上角的连接,弹出新键连接信息,如下图所示: 在主机名IP地址那里填写LocalHost 用户名与密码一栏则填写你所在的数据库用户名与密码. 这时候还不能连接数据库的,需要通过Http通道的形式进行数据库连接. 点击连接属性标签栏中的Http,如下图所示: 勾选使

  • Navicat 远程连接 MySQL实现步骤解析

    前言 相信大家都有在远程服务器上进行开发吧,其中 MySQL 的使用率应该也会挺高,如果使用 Navicat 等可视化工具来操作远程数据库不失为一种很好的选择,避免了在命令行写 SQL 语句的操作.下面简单介绍一下 Navicat 连接远程数据库的操作. 1 首先我们需要更改 3306端口,查看3306 端口是否对外开放,MySQL 默认情况下是不开放对外访问功能的.语句如下: netstat -an | grep 3306 如果查询结果如下,需要我们更改 MySQL 配置文件. 可以看出,my

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

    Navicat无法远程连接MySql服务器问题的解决方法写在前面: 操作系统:中标麒麟4.0: 数据库:MySQL5.7.26: JDK:采用中标麒麟系统自带的openjdk: 客户端工具:Navicat: 前置条件: MySQL服务安装完毕: 情景: 安装好mysql,本地访问正常,但同一个局域网内的机器都无法访问该服务器上的mysql数据库: 原因: mysql默认是不可以通过远程机器访问的,只允许本地访问,通过下面的配置可以开启远程访问: 排查思路: mysql设置远程访问主要从以下三个方

  • 远程连接mysql错误代码1130的解决方法

    下面给大家介绍远程连接mysql错误代码1130的解决方法: 以上所述是小编给大家介绍的远程连接mysql错误代码1130的解决方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的.在此也非常感谢大家对我们网站的支持!

  • PHP远程连接MYSQL数据库非常慢的解决方法

    不知道如何解决,所以把他空间所在的服务器上也装了个MYSQL,才解决问题,今天又有个这个问题,不能也在这服务器上装一个MYSQL吧,Search: PHP远程连接MYSQL速度慢,有时远程连接到MYSQL用时4-20秒不等,本地连接MYSQL正常,出现这种问题的主要原因是,默认安装的MYSQL开启了DNS的反向解析,在my.ini(WINDOWS系统下)或MY.CNF(UNIX或LINUX系统下)文件的[mysqld]下加入skip-name-resolve这一句,保存. 开始-->运行-->

  • MyEclipse连接MySQL数据库报错解决办法

    我们现在一般网站都是利用的MySQL数据库搭建网站的,但是在网上看到很多网友吐槽数据库连接不上的问题,现在我就结合相关资料向提出一些我个人的见解,希望对大家解决问题有帮助. 一般MySQL连接不上,可能有两大原因:1.MyEclipse配置错误 2.MySQL配置不当. 一.我们一般的连接步骤如下: 1.在MyEclipse中连接MySQL数据库:依次点击window-->show view-->other-->MyEclipse Database-->DB Browser 图一:

  • 解决navicat远程连接mysql报错10038的问题

    navicat远程连接mysql报错10038一般由以下两个原因: 一:本地防火墙问题 在本地安装了mysql.navicat并打开了mysql服务的情况下,来设置防火墙. 首先右击或者点击入站规则,找到新建规则,点击. 点击端口. 在特定本地端口中填入3306. 一直点击下一步. 这里可以给一个好分别的名称即可. 之前再尝试连接即可,若仍然不可以,可能是服务器方面的问题. 二:服务器3306端口未打开 首先需要在安全组开放端口. 我这里使用的是阿里云服务器.首先需要进入云服务器,找到安全组.

  • Navicat Premium远程连接MySQL数据库的方法

    新建连接的一方相当于是客户端,被连接的相当于是服务端,步骤如下: 1.创建子账户,在Navicat查询界面键入以下授权命令,依次执行 GRANT ALL PRIVILEGES ON test.* to 'root333'@"%" IDENTIFIED by 'abc111' WITH GRANT OPTION; FLUSH PRIVILEGES; all PRIVILEGES意思是所有权限: on后面接的是数据库名.表名 如:test.* 的意思是授予的权限是数据库test下的所有表,

  • 详解Navicat远程连接mysql很慢

     最终解决办法在最后一张图片 如果你连接远程数据库(Linux系统)并且很慢(具体症状为第一次连接打开所有的表貌似不是很慢,正常的,但是隔几分钟后任意打开一张表就很慢,即时数据很少的表依然很慢),我们用命令找到配置文件(mysql5.7的) sudo vi /etc/my.cnf 此时一般会提示你输入密码,那么你输入密码后,再执行编辑命令 sudo vi /etc/my.cnf 点击键盘insert键此时进入编辑模式,找到对应的位置,把需要配置的(如下)添加进去 [mysqld] #远程连接忽略

  • Navicat Premiun远程连接MySQL报错10038解决方案

    远程连接MySQL失败,可能有一下原因: 1.小伙子/小姑凉注意一下你的ip是否输入正确了!! 2.网络或防火墙问题 1).排查网络问题 使用命令:ping 192.168.1.1 查看网络请求是否超时. 正常接收数据进行下一步排查 2).排查云服务器防火墙是否将其挡住. 使用命令:telnet 192.168.1.1 3306,如果连接失败,有两个原因 a).查看云服务器端口是否开放. 开放情况(我这边使用的是阿里云): 开放端口配置: 如果云服务器的端口已经开放了.但是还是访问不到服务器的3

  • Python基于ssh远程连接Mysql数据库操作

    目录 背景 安装支持库 连接Mysql 自定义查询函数 背景 如果需要访问远程服务器的Mysql数据库,但是该Mysql数据库为了安全期间,安全措施设置为只允许本地连接(也就是你需要登录到该台服务器才能使用),其他远程连接是不可以直接访问,并且相应的端口也做了修改,那么就需要基于ssh来连接该数据库.这种方式连接数据库与Navicat里面界面化基于ssh连接一样. Navicat 连接数据库 安装支持库 如果要连接Mysql,首先需要安装pymysql pip install pymysql 安

  • Centos7下无法远程连接mysql数据库的原因与解决

    前言 最近在工作中遇到一个问题,发现在Centos7系统下怎么也不能远程连接mysql,通过查找相关的资料,终于解决了,以下方法就是我在碰到远程连接不到Mysql数据库后试过的方法,最终也是解决掉了问题.所以总结一下分享出来,供同样遇到这个问题的朋友们参考学习,下面话不多说了,来一起看看详细的介绍吧. 有两种原因 数据库没有授权 服务器防火墙没有开放3306端口 一.数据库没有授权 对于mysql数据库没有授权,只需要用一条命令就可以了. mysql>GRANT ALL PRIVILEGES O

随机推荐