Sequelize 在使用 MySQL 时出现的 “SequelizeConnectionError: Client does not support authentication protocol requested by server” 错误处理

阅读时长 3 分钟读完

在使用 Sequelize 连接 MySQL 数据库时,有时会遇到 “SequelizeConnectionError: Client does not support authentication protocol requested by server” 错误,这是由于 MySQL 8.0 版本开始默认使用了新的加密插件,而 Sequelize 的默认加密插件不支持此加密方式导致的。

解决方法

方法一:升级 Sequelize 版本

从 Sequelize 5.0 版本开始,已经支持新的加密插件,因此升级到最新版本即可解决此问题。

方法二:修改 MySQL 用户密码加密方式

如果无法升级 Sequelize 版本,可以通过修改 MySQL 用户密码加密方式来解决此问题。

步骤一:登录 MySQL

步骤二:查看当前加密方式

如果出现以下结果,则表示当前使用的是新的加密方式:

步骤三:修改用户密码加密方式

其中,userhost 分别为需要修改的用户和主机名,password 为用户密码。

步骤四:刷新权限

方法三:使用兼容的加密插件

如果无法升级 Sequelize 版本或修改 MySQL 用户密码加密方式,可以使用兼容的加密插件来解决此问题。

在 Sequelize 配置中添加以下代码:

-- -------------------- ---- -------
----- --------- - --- ------------------- --------- --------- -
  -------- --------
  -------------- ------------------
  --------------- -
    ---- ------- -----
    ------------ -
      --------------------- -- -- -- -- -------------------- - -----
    -
  --
  -----
  -----
  -------- ------
---

总结

本文介绍了 Sequelize 在使用 MySQL 时出现的 “SequelizeConnectionError: Client does not support authentication protocol requested by server” 错误处理方法,包括升级 Sequelize 版本、修改 MySQL 用户密码加密方式和使用兼容的加密插件。希望能够帮助大家解决类似问题。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/660a6b3ed10417a222a05165

纠错
反馈