在nodejs向数据库插入数据时候报错Error ER_NOT_SUPPORTED_AUTH_MODE Client does not support authentication protocol requested by server; consider upgrading MySQL client 怎么解决是什么问题告诉我解决办法 服务器采用的是caching_sha2_password
这个错误是由于MySQL数据库的身份验证方式与Node.js的MySQL模块的身份验证方式不兼容造成的。MySQL 8.0 默认采用了 caching_sha2_password 身份验证插件,而旧版本的 MySQL 模块不支持这种方式。
解决方法如下:
-
升级 Node.js 的 MySQL 模块版本到最新版,最新版已经支持 caching_sha2_password 身份验证插件。
-
更改 MySQL 数据库的身份验证方式为旧版的 mysql_native_password。可以通过以下步骤进行更改:
a. 进入 MySQL 数据库,使用 root 用户登录。
b. 执行以下 SQL 语句:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourpassword';
注意:将 'root' 和 'yourpassword' 替换为你的用户名和密码。
c. 退出 MySQL 数据库。
- 在连接 MySQL 数据库时,添加以下选项:
connectionLimit: 10, host: 'localhost', user: 'root', password: 'yourpassword', database: 'yourdatabase', authPlugins: { mysql_clear_password: () => () => Buffer.from(yourpassword + '\0') }
注意:将 'yourpassword' 和 'yourdatabase' 替换为你的密码和数据库名。
以上是常见的解决方法,如果还是无法解决问题,建议查看 MySQL 官方文档,了解更多关于身份验证方式的信息。
原文地址: https://www.cveoy.top/t/topic/becT 著作权归作者所有。请勿转载和采集!