navicat for mysql远程连接ubuntu上的mysql。2003-Can’t ...(10038)、1251-client does....错误的解决。

navicat for mysql 连接不上mysql服务的原因排除

1:确保mysql的数据库服务正确启动

2:输入的用户名密码是否正确

3:数据是否开启远程连接

4:关闭防火墙

5:mysql版本不同导致的加密规则不同的问题

一、

1、现在先来查看ubuntu的ip地址,在终端输入如下命令。

ifconfig

我们用windows机器ping一下ubuntu,发现能ping通,如果不通可能涉及到网卡的问题,本文未做讲解。

2、尝试用navicat远程登录,使用root用户的密码来登录。

3、报错,无法连接。

二、解决2003这个问题

1、检查ubuntu上的mysql服务是否正常启动,命令如下:

service mysql status

 发现服务正常启动。

2、检查用户名密码是否错误,我们使用刚才的root用户以及密码在ubuntu上进行登录看看能否进入数据库。

sudo mysql -uroot -p000000

成功登录说明用户名密码没有问题。

3、检查是否允许远程连接,因为一般mysql数据库刚安装时默认不允许远程连接的,我们现在来开启远程连接,有两步一是修改数据配置文件中的bind-address以及mysqlx-bind-address两个参数注释掉,这两个参数原本为127.0.0.1只能监听本地。注释掉之后就监听所有的ip。

注意 :这里一定要加sudo 否则即便保存之后也修改不成功。

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

把bind-address以及mysqlx-bind-address注释掉

注意:一定要重启mysql服务器,否则不生效。

service mysql restart

重启成功。

4、我们下一步需要开启root用户的远程连接,我们先进入数据库,查看数据库的用户登录表。

登录mysql

sudo mysql -uroot -p000000

进入mysql数据库

use mysql

查找所有的用户表,命令如下

select user,host from user;

我们看到mysql只允许root用户从本地进行登录,而不能从远程登录。

我们通过如下命令来进行修改,将只允许本地登录改为允许任意host登录。

update user set host='%' where user='root' and host='localhost' LIMIT 1;

刷新权限

flush privileges;

查看是否修改成功

select user,host from user;

5、随后我们检查ubuntu的防火墙是否关闭,因为防火墙会屏蔽连接。

service firewalld status;

防火墙处于开启状态

关闭防火墙命令如下

systemctl stop firewalld

防火墙已经关闭

三、接下来我们尝试再一次使用navicat来连接ubuntu上的mysql。

我们发现报了一个新的错误,经过检索,发现是因为mysql版本之间加密方式不一样,这种问题其实是加密规则的问题: 出现这个问题原因是mysql8之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password解决办法:把mysql用户登录密码加密规则还原成mysql_native_password。

先进入mysql数据库,在具体操作如下:

更改加密方式

#在mysql中先更改加密方式
ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;

 重新设置root的密码,并刷新权限

#由于加密规则更改,所以需要重新设置密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '000000';
#刷新权限
FLUSH PRIVILEGES;

至此加密方式更改完成

最后再尝试用navicat进行连接。

连接成功啦!!!!!!!

  • 35
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值