在使用 Sequelize 操作 MySQL 数据库时,有时候会遇到 “Client does not support authentication protocol requested by server” 错误。这个错误一般是由于 MySQL 8.0 默认采用了新的密码验证方式而引起的,而旧版的 Sequelize 不支持这种验证方式,所以会导致连接失败。本文将介绍如何解决这个问题。
解决方法
解决这个问题的方法比较简单,只需要将 MySQL 的密码验证方式改为旧版的方式即可。具体方法如下:
使用 MySQL 客户端连接到数据库,输入以下命令:
ALTER USER 'youruser'@'localhost' IDENTIFIED WITH mysql_native_password BY 'youpassword';
其中,
youruser
是你的用户名,localhost
是你的主机名,youpassword
是你的密码。如果你的用户名和主机名不同,请修改为对应的值。重启 MySQL 服务。
完成上述步骤后,再次使用 Sequelize 连接 MySQL 数据库,应该就不会再出现 “Client does not support authentication protocol requested by server” 错误了。
示例代码
下面是使用 Sequelize 连接 MySQL 数据库的示例代码,供参考:
-- -------------------- ---- ------- ----- --------- - --------------------- ----- --------- - --- --------------------- ----------- ----------- - ----- ------------ -------- -------- ----------------- ------ --------------- - ---- ------- ---- - --- ------------------------ -------- -- - ----------------------- --- ---- ----------- ---------------- -- ---------- -- - --------------------- -- ------- -- --- ----------- ----- ---
在上面的代码中,database
是你的数据库名,username
和 password
分别是你的用户名和密码。如果你的数据库不在本地,请修改 host
的值为对应的主机名。如果你的数据库需要 SSL 连接,请修改 dialectOptions
的值为对应的选项。
总结
本文介绍了在使用 Sequelize 操作 MySQL 数据库时出现 “Client does not support authentication protocol requested by server” 错误的解决方法,即将 MySQL 的密码验证方式改为旧版的方式。同时,本文还提供了示例代码,供读者参考。希望本文能够帮助到遇到这个问题的读者。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/660659dbd10417a22247acc0