Navicat连接linux虚拟机上的MySQL可能遇到的问题及排查方法

 更新时间:2024年02月02日 10:47:26   作者:涛声依在  
这篇文章主要介绍了Navicat连接linux虚拟机上的MySQL可能遇到的问题以及如何排查,本文给大家展示了问题描述及解决方法,需要的朋友可以参考下

为什么写这篇文章

很大一部分原因是因为网上找不到比内容较全的文章作为一个小白解决所面临的问题

关于Navicat连接Linux上的MySQL为什么出现以下报错

问题描述

这个报错很有可能是你的linux的防火墙不允许你连接到MySQL服务器导致的具体怎么排查,后面会详细说明。

这个报错有可能是以下原因
1、MySQL 服务器没有在你指定的 IP 地址 ‘192.168.111.128’ 上运行。
2、MySQL 服务器正在运行,但防火墙或网络设置阻止了你的连接请求。
3、在 Navicat 中提供的 MySQL 用户名、密码或端口号不正确。
请注意:这里的(using password:YES)指的是你是否填写了密码而不是你的密码是正确的,即使你填写了错误的密码,他还是会报这个错误。

如何排查问题出在哪:

对于图一,首先我们可以尝试Windows上通过命令行是否能够ping通linux的ip地址

如果没有ping通先考虑自己是否选对了linux的ip地址,查看linux的ip地址可以打开终端输入ifconfig或者使用ip addr show查看,一般是eth33或者eth0,一定要选对ip地址,不要以为第一个就是ip地址,因为有些同学可能在linux上安装了doker环境等导致第一个并不是Linux的ip地址。

同时需要注意的是,对于虚拟机centos7版本linux的网卡有两种

这两种会对应两种不同的ip地址

如果你的虚拟机需要连接到Internet,你可能会使用VMnet8(通常配置为NAT模式)。而VMnet1通常用于虚拟机之间的仅主机通信。

值得提一嘴的是,我一开始一直以为是本机IP与Linux的mysql进行连接,直到我发现了图二的报错中root用户对应的host地址是192.168.44.1,而且如果你是连接的校园网,那么你的ip地址很有可能是局域网ip而不是你的公网ip地址,所以我在配置mysql服务器用户的时候一直使用的就是本机的ip地址,而不是根据报错改的,因为图一报错让我查询到了很多不相关的东西,不知道怎么排查错误乱改,导致明明很简单的东西却复杂化了。
所以说这就是为什么当你试图解决一个你不理解的问题时,复杂化就产生了。QAQ

当这两个都没有什么问题,你还是有图一的报错时,你可以配置防火墙允许其他ip访问你的mysql服务器端口(默认是3306端口),即防火墙放开mysql端口(默认为3306).
在Linux系统中,有两种主要的防火墙工具,分别是iptables和firewalld。在较新的Linux发行版中,如CentOS 7及以上版本,默认使用的是firewalld的防火墙,而不是iptables。
这里以firewalld为例子,iptables防火墙操作也是类似的这里不做详细说明。

在firewalld防火墙上允许MySQL服务器的3306端口供外部访问,你可以按照以下步骤进行操作:

  • 首先,确保你已经登录到Linux服务器上,并且具有管理员权限。
  • 打开终端或命令行界面。
  • 输入以下命令以允许3306端口通过防火墙:
sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
sudo firewall-cmd --reload

当你的图一报错解决后出现了图二的报错,那么你可以先登录你的mysql查看,在你使用登录命令时可能会出先报错,因为你的权限不够,如图

可以使用su命令提高权限至超级管理员,或者在mysql -u “username”-p 命令前加sudo提高命令的权限来解决这个问题,“username”是选择登录的mysql用户名。

登陆后可以使用如下语句查看你的mysql上的用户名及主机(host)地址

SELECT user, host FROM mysql.user;

默认应该只有下面四个,我的是添加了对应虚拟机两种不同状态下的用户及主机
如果只有下面四个,那么你的mysql只能本地访问,Navicat上根本找不到对应的用户
,就会报图二的错误,其次就是输错了密码或则用户名也会报图二错误。

那么应该如何添加相关用户,如果你的MySQL是8.0及以后的版本。
你可以使用命令create user创建用户,然后使用alter user命令设置密码,最后使用grang命令赋予权限
以图二报错的用户名为root,ip地址为192.168.44.1为例

create user 'root'@'192.168.44.1';
ALTER USER 'root' @'192.168.44.1' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'root' @'192.168.44.1';
FLUSH PRIVILEGES;

注意这里的password需要你自己输入相关密码,我这里就用password代替了。
根据图二的报错添加mysql的用户来供windows访问,就能解决问题了。

希望这篇文章能对你有所帮助,确实写文章很花时间,这也应该是很多人为什么遇到问题花了很长时间解决,不会把经验分享出来的一个原因。

到此这篇关于Navicat连接linux虚拟机上的MySQL可能遇到的问题以及如何排查的文章就介绍到这了,更多相关Navicat 连接MySQL问题内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解MySQL的Seconds_Behind_Master

    详解MySQL的Seconds_Behind_Master

    对于mysql主备实例,seconds_behind_master是衡量master与slave之间延时的一个重要参数。通过在slave上执行"show slave status;"可以获取seconds_behind_master的值。
    2021-05-05
  • 修改Mysql root密码的方法

    修改Mysql root密码的方法

    这篇文章主要介绍了修改Mysql root密码的方法的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-11-11
  • MYSQL5.6.33数据库主从(Master/Slave)同步安装与配置详解(Master-Linux Slave-windows7)

    MYSQL5.6.33数据库主从(Master/Slave)同步安装与配置详解(Master-Linux Slave-w

    这篇文章主要为大家详细介绍了MYSQL5.6.33数据库主从(Master/Slave)同步安装与配置,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • mysql创建表设置表主键id从1开始自增的解决方案

    mysql创建表设置表主键id从1开始自增的解决方案

    在MySQL中用很多类型的自增ID,每个自增ID都设置了初始值,一般情况下初始值都是从0开始,然后按照一定的步长增加(一般是自增 1),下面这篇文章主要给大家介绍了关于mysql创建表设置表主键id从1开始自增的解决方案,需要的朋友可以参考下
    2023-04-04
  • mysql 5.7.13 winx64安装配置方法图文教程(win10)

    mysql 5.7.13 winx64安装配置方法图文教程(win10)

    这篇文章主要为大家分享了mysql 5.7.13 winx64安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • MYSQL的主从复制知识点整理

    MYSQL的主从复制知识点整理

    在本篇文章里小编给大家整理的是一篇关于MYSQL主从复制的相关知识点内容,有需要的朋友们参考学习下。
    2019-11-11
  • Mysql数据库delete操作没报错却删除不了数据的解决

    Mysql数据库delete操作没报错却删除不了数据的解决

    本文主要介绍了Mysql数据库delete操作没报错却删除不了数据的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • 详解MySQL中的视图

    详解MySQL中的视图

    视图是一个虚拟表,非真实存在,其本质是根据SQL语句获取动态的数据集,并为其命名,用户使用时只需使用视图名称即可获取结果集,并可以将其当作表来使用,这篇文章主要介绍了MySQL的视图,需要的朋友可以参考下
    2022-12-12
  • MySQL5.6基本优化配置

    MySQL5.6基本优化配置

    这篇文章主要介绍了MySQL5.6基本优化配置,详细分解了MySQL5.6需要优化的配置项,最终给出了一个优化案例,需要的朋友可以参考下
    2014-06-06
  • MySQL自动填充create_time和update_time的两种方式

    MySQL自动填充create_time和update_time的两种方式

    当我们创建业务表的时候 通常都需要设置create_time 和 update_time,下面这篇文章主要给大家介绍了关于MySQL自动填充createTime和updateTime的两种方式,需要的朋友可以参考下
    2022-05-05

最新评论