将 Node.js 服务器连接到 MySQL 数据库时,可能会遇到错误“ER_NOT_SUPPORTED_AUTH_MODE: Client does不支持服务器请求的身份验证协议。”当客户端和服务器使用不同的身份验证方法时,就会出现此问题。
问题分析
错误消息表明 MySQL 服务器配置为使用较新的身份验证协议Node.js 客户端不支持。如果 Node.js 客户端版本过时,就会出现这种情况。
解决方案
要解决此问题,请升级 Node.js 客户端以支持使用的较新身份验证协议由MySQL服务器。对于 MySQL v8.0,请按照以下步骤操作:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; FLUSH PRIVILEGES;
请记住将“root”和“password”替换为实际用户名和所需密码。这些更改需要应用于尝试连接的用户。
代码片段(已更新)
更新 MySQL 配置和用户权限后,Node. Node.js 连接片段应更新为使用 mysql2 库,该库支持较新的身份验证协议:
const mysql = require('mysql2'); const connection = mysql.createConnection({ host : 'localhost', user : 'root', password : 'password', database : 'foobarDb' });
通过实施这些步骤,您可以成功在 Node.js 服务器和 MySQL 数据库之间建立连接,从而消除“ER_NOT_SUPPORTED_AUTH_MODE”错误。
以上是如何修复 Node.js 连接 MySQL 时出现'ER_NOT_SUPPORTED_AUTH_MODE”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!