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

在使用 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