首页 > 数据库 >详解连接 MySQL8.4 出现 Client does not support authentication protocol requested by server

详解连接 MySQL8.4 出现 Client does not support authentication protocol requested by server

时间:2024-11-12 16:51:07浏览次数:3  
标签:Node requested mysql2 protocol support MySQL mysql password native

文章目录


项目场景

在开发过程中,我们在 Node.js 项目中使用 MySQL 数据库,并且通过 typeormmysql 库进行数据库连接。然而,在项目启动时,遇到了数据库连接失败的问题,导致项目无法正常运行。


问题描述

在尝试初始化 MySQL 数据库连接时,出现了以下错误提示:

Database initialization Error Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client
    at Handshake.Sequence._packetToError (D:\ts-primevue-01\ts-primevue-01\nodets-express-api\node_modules\mysql\lib\protocol\sequences\Sequence.js:47:14)
    ...
code: 'ER_NOT_SUPPORTED_AUTH_MODE',
errno: 1251,
sqlMessage: 'Client does not support authentication protocol requested by server; consider upgrading MySQL client',
sqlState: '08004',
fatal: true

错误信息说明:ER_NOT_SUPPORTED_AUTH_MODE 表示当前的 MySQL 客户端不支持 MySQL 服务器要求的身份验证协议。MySQL 8.0 及以上版本默认使用 caching_sha2_password 认证协议,但某些客户端(如 Node.js 的 mysql 库)只支持 mysql_native_password,因此发生了兼容性问题。

在这里插入图片描述
在这里插入图片描述


原因分析

该问题的原因在于 MySQL 8.4(截至2024年的最新LTS版本)默认的认证方式变更为 caching_sha2_password,以提高安全性。但一些旧版本 MySQL 客户端(如 Node.js 的 mysql 库)不支持这种认证方式,只支持 mysql_native_password,此外,MySQL 9.0完全删除了此插件。当服务器使用的认证方式与客户端不匹配时,就会导致无法连接的问题。
在这里插入图片描述

在MySQL 8.0.348.3中,使用mysql_native_password插件会导致MySQL错误日志中记录警告:

[Warning] [MY-013360] [Server] Plugin mysql_native_password reported: ''mysql_native_password' is deprecated and will be removed in a future release. Please use caching_sha2_password instead'

MySQL 8.4修改为不再加载mysql_native_password插件,是默认禁用状态,这导致了上面显示的错误。在MySQL 9.0上,mysql_native_password插件被完全删除,这也会导致相同的错误,下面图片是显示root用户插件使用的是什么:
在这里插入图片描述

问题是Node中的mysqljs(你用npm i mysql安装并在Node代码中使用的包)还不支持MySQL 8的这种新的默认身份验证方法。这个问题在这里:github issue

标签:Node,requested,mysql2,protocol,support,MySQL,mysql,password,native
From: https://blog.csdn.net/Huahua_1223/article/details/143698884

相关文章

  • System.Data.SqlClient is not supported on this platform.
    异常: 程序在修改了非数据库相关的代码后发布进行部分覆盖,抛出异常,本次并未覆盖数据库相关的dll查询解决方案都给出的是,将本地的Microsoft.Data.SqlClient.dll拷贝到发布处覆盖,这种方式不行本次原因:之前发布是目标运行时选的“可移植”,部署地方还是保持可移植,而本次因其他地......
  • CSS中 特性查询(@supports)详解及使用
    1.简介CSS中的@supports用于检测浏览器是否支持CSS的某个属性。其实就是条件判断,如果支持某个属性可以写一套样式,如果不支持某个属性,可以提供另外一套样式作为替补。可以放在代码的顶层,也可以嵌套在任何其他条件组规则中。语法@supports规则由一组样式声明和一条支持条件构......
  • 一文读懂远程控制协议—Remote Control Protocol
        随着中央计算+区域控制的中央集中式架构广泛应用,10BASE-T1S技术逐渐得到各方关注,总线型及半双工的特性让10BASE-T1S在成本和功耗上更占优势。在此基础上,为了进一步实现中央计算+区域控制的理念,2023年5月,BMW在OPEN联盟TC14的会议中提到了远程控制协议RemoteControlPro......
  • CPSC 471 HTTP protocol
    CPSC471-05AssignmentIntroductionAttheheartofthecommunicationinvolvingabrowserandaserver,RFC2616definesthefundamentalprotocolthatgovernsinteractionsbetweeninternetdevices.TheresultwasknownastheHTTPprotocol.Inthisassign......
  • python urllib3 v2 only supports OpenSSL 1.1.1+, currently the 'ssl' module is co
    pythonurllib3v2onlysupportsOpenSSL1.1.1+,currentlythe‘ssl’moduleiscompiledwith‘LibreSSL2.8.3’问题解决。我在用python3.9执行脚本时出现一个warning的错误,如下:/Users/Library/Python/3.9/lib/python/site-packages/urllib3/__init__.py:35:Not......
  • 如何解决ffmpeg安装报错ERROR: You have requested merging of multiple formats but
    ......
  • LockSupport
    LockSupport是什么LockSupport是用来创建锁和其他同步类的基本线程阻塞原语,其中park()和unpack()而作用分别是阻塞线程和解除阻塞线程.线程等待唤醒机制三种让线程等待和唤醒的方法方式一:使用Object中的wait()方法让线程等待,使用Object中的notify()方法唤醒线程方式二:使用J......
  • sgx模拟执行,不需要sgx硬件---sgx executed in simulation,No need to support hardwar
    sgxexecutedinsimulation使用项目:https://github.com/intel/linux-sgx.git前言:目前国内和国外互联网上关于使用模拟模式来完成sgx的博客我是真的一点没有找到,因此自己写一份博客来完成记录环境:Ubuntu22.04不支持sgx,没有硬件存在(mac也可以按照本教程来完成工作)......
  • 报error:0308010C:digital envelope routines::unsupported错--nodejs版本过高(nvm安
    最近小编入职实习,运行(npmrundev)前端项目时报error:0308010C:digitalenveloperoutines::unsupported的错,一查发现原来是nodejs版本过高,与项目不匹配。接下来介绍更换nodejs版本的方法。第一种:官网下载通过nodejs官网下载安装,但有个缺陷,不同版本的nodejs无法顺利的切换......
  • Protocol Buffer Error on compile during GOOGLE_PROTOBUF_MIN_PROTOC_VERSION check
    ProtocolBufferErroroncompileduringGOOGLE_PROTOBUF_MIN_PROTOC_VERSIONcheck出现这个问题一般是安装了多个版本protobufhttps://stackoverflow.com/questions/35744529/protocol-buffer-error-on-compile-during-google-protobuf-min-protoc-version-checkhttps://b......