navicat连接mysql8报错2003 - can‘t connect to mysql server on 10061 unknown error

mysql --version结果:mysql  Ver 8.0.22-0ubuntu0.20.04.3 for Linux on x86_64 ((Ubuntu))

有人说是mysql8改了身份认证方式,但navicat还是使用的旧身份认证方式;或未开启远程连接的原因;查我的报错代码都是windows环境未启动mysql服务,而我的mysql在linux,图中xshell已进入mysql,说明mysql服务已启动,也可以通过service mysql status或ps -ef | grep mysql查看。

之前文章记录了我的mysql的配置,sudo mysql_secure_installation时选了允许远程root登录(问Disallow root login remotely?,输入n再回车),root身份认证方式是旧的;另一篇文章记录了我的普通用户的主机是%,是任意地址,身份认证方式是新的(那篇文章末尾有查看方式)。这两个用户都不能用navicat连上mysql,即便身份认证方式都改成旧的,且主机都改成%,不行。

后来经过搜索和测试,我的环境要想远程登录,要满足两个条件,允许远程登录和要远程登录的用户的主机地址设为%,后者可以在创建用户时直接指定,也可以创建用户后再修改。

sudo mysql_secure_installation # (之前文章设置过了,这里无需再设置)

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf # 将bind-address=127.0.0.1改成0.0.0.0或直接注释掉这一句,127.0.0.1与localhost都表示本地

service mysql restart

update user set host='%' where user='username'; # 将要远程登录的用户的主机,改成%允许任意地址登录,前提是已设置上面的允许远程登录

补充:navicat打开时(还未点击数据库)我的防火墙有联网提醒,IP是国外IP,我就点了阻止连接,这也会导致navicat无法连接mysql,允许连接就行(最好创建允许规则,因不同防火墙只点允许时,可能还是无法连接)。暂时不知道原因,可能是navicat打开时需要联网验证授权才能使用,也可能是我点阻止连接时会阻止navicat的所有出站请求,待验证。另外,也可以检查linux防火墙里是否允许了mysql端口,我暂时未遇到。

补充:redis-server --version结果:Redis server v=5.0.7 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=636cde3b5c7a3923

用RedisDesktopManager连接redis服务器,或用python操作redis服务器,同样需要先开启远程连接,sudo vim /etc/redis/redis.conf,注释掉bind 127.0.0.1 ::1,再添加bind 0.0.0.0,再service redis-server restart或service redis restart,防火墙也要允许联网或允许端口。(其他需要注意的,我暂未遇到)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值