“ER_NOT_SUPPORTED_AUTH_MODE”错误表示 Node.js 客户端由于以下原因无法与 MySQL 服务器建立连接不支持的身份验证协议。当 MySQL 服务器需要客户端不支持的特定身份验证方法时,就会出现此问题。
在您的情况下,您已从 MariaDB 升级到 MySQL。但是,您使用的 JavaScript 连接片段可能仍在使用 MariaDB 身份验证协议,MySQL 8.0 及以上版本不支持该协议。
解决方案:
解决此问题,您需要升级 Node.js 客户端以支持 MySQL 原生身份验证协议。该协议兼容 MariaDB 和 MySQL 服务器。
对于 MySQL 8.0 及以上版本,使用以下命令更新 root 用户的身份验证方法:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
将“root”替换为用户名和“密码”以及所需的密码。
更新身份验证方法后,执行以下命令以激活更改:
FLUSH PRIVILEGES;
现在,修改您的 JavaScript 连接片段以使用 MySQL 本机协议:
var mysql = require('mysql'); var connection = mysql.createConnection({ host: 'localhost', user: 'root', password: 'password', database: 'foobarDb', authPlugin: 'mysql_native_password' // specify the MySQL native authentication protocol });
这应该解决“ER_NOT_SUPPORTED_AUTH_MODE”错误并允许您连接到 MySQL来自 Node.js 服务器的数据库。
以上是为什么从 Node.js 连接到 MySQL 时会出现'ER_NOT_SUPPORTED_AUTH_MODE”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!