MyBatis连接MySQL 8.0 故障 (CLIENT_PLUGIN_AUTH is required) 的思考

本文记录了作者在使用MyBatis连接MySQL 8.0时遇到的CLIENT_PLUGIN_AUTH故障排查过程。问题源于本地两个数据库服务使用相同端口3306导致的冲突。通过一系列的实验和分析,最终确定是环境问题,即低版本数据库服务影响了高版本的连接。解决方案是停止冲突的低版本数据库服务,从而成功解决连接问题。
摘要由CSDN通过智能技术生成

前言

关于连接方式,这篇写的足够详细了https://zhuanlan.zhihu.com/p/48030404

关于故障 CLIENT_PLUGIN_AUTH is required,的确是对于低版本的数据库比如5.1或5.0使用了高版本的jre,

对于同类型类似的故障我推荐这个解决方案,降低jre版本:
https://blog.csdn.net/qq_25693315/article/details/87983711

但是,我期望连接的数据库为8.0,并且使用Navicat连接数据库测试成功,密码、账号、URL等正常配置均正确,但是却报了这样的错误

最终经过一段时间的探索,成功解决了问题。

导致发生这个故障的根本原因在于,我本地有多个数据库,其中有2个数据库服务都使用了3306端口(端口冲突),其中一个是低版本的数据库5.0,另一个是高版本的数据库8.0。

发现和解决错误的方式是通过任务管理器去重启数据库服务时发现多个服务,停用了冲突的服务后故障解除

本次的故障难以解决核心原因在于环境故障,这类故障位于思维盲区,并且用Navicat连接成功掩盖了环境问题,所以导致无法察觉。

我认为本次我探索发现这个故障时所经历的思考有启发意义所以整理博客发布。

探索经过

代码内环境和数据库版本

  • 数据库部署的环境为8.0.13
  • Maven部署的jre版本为8.0.13
  • JDBC连接库为db.driver=com.mysql.cj.jdbc.Driver

第一阶段

首先观察错误:

Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (CLIENT_PLUGIN_AUTH is required)

理解意思为:数据库连接失败,需要提供身份验证

观察其他人员的解决方案,有很大一部分人员提供的方案是发现自身数据库等级为5.xx.xx版本,要求降低Maven部署的jre和更换JDBC连接库。

当我实际使用该方案后,出现的错误为,无法使用127.0.0.1进行数据库连接。对此我做出推测,对于版本5

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值