局域网连接MYSQL8.0报错1251的解决记录

【问题背景】

最近做项目时,小组成员需要共享数据库,局域网连接mysql数据库时报1251号错误,现将处理过程记录下来,给遇到同样问题的同行们提供一点参考解决办法。

【问题分析】

报错内容是:1251-Client does not support authentication protocol requested by server;consider upgrading MySQL client。

意为:客户端不支持服务器请求的身份验证协议;请考虑升级MySQL客户端。

说明问题在于身份验证协议规则上。

由于我使用的是mysql8.0,进入官方mysql8.0参考手册中在“Security”一栏下的“Pluggable Authentication”一节中可以看到:

可知MySQL 5.7及之前的版本中加密规则是mysql_native_password,而MySQL 8.0的加密规则是caching_sha2_password。

看来是小组成员登录我的mysql8.0数据库时使用的是低版本的客户端,正如官方参考文档所说的“When a 5.7 client tries to connect to an 8.0 server, the server specifies caching_sha2_password as its default authentication plugin, but the client still sends credential details per either mysql_native_password”。

可知刚才报错内容说“consider upgrading MySQL client”建议升级客户端,看来也并不是没有道理,那就升级客户端?不,由于一个大家都懂的原因,我更愿意另想办法也不要让小组成员升级“Navicat for MySQL”(偷笑)。

那就只有一种比较便捷的方法了,那就是让我这边的MySQL 8.0 数据库以低版本的身份验证协议“mysql_native_password”来验证来自相应客户端的用户及其口令。

【操作步骤】

1.如果开发者A想要向局域网里的其他开发者B,C,D...共享自己的mysql数据库,则开发者A应该登录数据库后给相应的用户委派用户名和密码:

如:给ip地址为10.96.122.226的开发者B设置用户名为‘hl’,设置登录口令为‘123456’,且该口令永不过期。则命令为:

ALTER USER 'hl'@'10.96.122.226' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;

2.接下来就是1251报错解决方法的核心:更改身份验证方式为“mysql_native_password”:

ALTER USER 'hl'@'10.96.122.226' IDENTIFIED WITH mysql_native_password BY '123456';

3.刷新,使设置生效。

FLUSH PRIVILEGES;

4.开发者A在防火墙里设置好对应端口的出入站规则后,开发者B就可以连接到开发者A的ip对应端口进行数据库访问了。

【写在最后】

1.远程访问mysql数据库遇到1251报错也可以这样解决。

2.确保客户端与服务器之间通信正常,且防火墙设置合理。

3.同样地,本地登录root时报错1251也可以参考这样的方法。将上面语句中的'hl'@'10.96.122.226'改为'root'@'localhost'即可。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值