当前位置: 首页 > news >正文

Sequelize mysql2驱动 不支持 caching_sha2_password

令人震惊,nodejs的后端生态支持已经差到了这种地步。从 2018 年 MySQL 8 发布起算,到今天已经7年的时间,作为 MySQL 默认加密方式的 caching_sha2_password ,仍然没有被 mysql2 驱动支持。Sequelize 使用了 mysql2,所以 Sequelize 也无法支持。

而 Sequelize 是 nodejs 最火的后端 ORM 框架,最火的框架都这样,其他的框架咋样我都不敢想。

曾经流行的nodejs mysql 驱动名称就叫 mysql。但是由于团队逐渐不活跃,很多功能常年不支持,因此有热心大神扩充了其功能,就有了 mysql2. 也就是说,mysql2 已经是改进后的结果了,原版本更烂。

mysql2:https://github.com/sidorares/node-mysql2

mysql:https://github.com/mysqljs/mysql

mysql 8  默认是 caching_sha2_password 加密方式。为了访问mysql8,当你通过下面或者其他的写法来设置 caching_sha2_password 后,会遇到报错。

authPlugins: {'caching_sha2_password': true},

报错为:Plugin 'mysql_native_password' is not loaded"

你会很奇怪,为什么明明指定了 caching_sha2_password 加密,但是报错却是 mysql_native_password 加密呢?  当然是因为你的指定根本没有生效。

参看下面的代码:

这里是写死的 mysql_native_password,你改什么都没用。

嘿,那你可能就想了,我能不能改 mysql2 的源码,让它不要写死,这样我还能给社区提个PR?

如果你有这种勇气的话,我很敬佩你。我虽然也这么想过,但是我猜这个功能没这么简单。你在这里把这个写死的值改了,只是解决了一个小问题,但是整个数据库驱动这么多代码逻辑,你很难说哪里会有对 mysql_native_password 的依赖。改两行代码很容易,但是让整个功能完美run起来就难了。祝你成功。

那我们怎么解决呢?只能改服务端,开启 mysql_native_password 加密。

那就有了一个新坑,因为笔者在 MacOS 上开发。 M1芯片+MacOS15.5,debuff叠满了,改服务端也没那么容易。我单独写一篇文章。

文章已写好:MacOS15.5 MySQL8 开启 mysql_native_password-CSDN博客

相关文章:

  • 【wsl】docker
  • datawhale Dify动手实践教程 第1次笔记
  • 课设作业图书管理系统
  • UWB协议精读:IEEE 802.15.4z-2020,15. HRP UWB PHY, STS, HRP-ERDEV, BPRF, HPRF,
  • 探秘卷积神经网络(CNN):从原理到实战的深度解析
  • 红队攻防渗透技术实战流程:信息打点-Web应用源码泄漏开源闭源指纹识别GITSVNDS备份
  • 生成对抗网络(GAN)与深度生成模型实战
  • CppCon 2016 学习:Rainbow Six Siege: Quest for Performance
  • 移动端 WebView 页面性能调试实战:WebDebugX等工具协同与优化
  • 【pytest进阶】Pytest之conftest详解
  • MCP(模型上下文协议)协议和Http协议对比
  • 窄带和宽带谁略谁优
  • python web开发-Flask 重定向与URL生成完全指南
  • 3.时间序列数据准备
  • @PostConstruct,@PreDestroy 典型用法
  • 如何科学测算AI业务场景所需算力服务器?——以Qwen3 32B模型与海光K100为例
  • 从C++编程入手设计模式——策略设计模式
  • 外包团队介入多个项目时如何确保协同一致
  • 服务器带宽小优化建议以及实战操作
  • 代码生成器使用原理以及使用方法
  • 绵阳的网站建设/百度seo优化技巧
  • wordpress简化注册/seo推广营销靠谱
  • 广安网站制作设计/醴陵网站制作
  • 公司网站优势/网络推广外包要多少钱
  • 海沧网站制作/微信crm管理系统
  • 邯郸移动网站建设报价/公司优化是什么意思?