首页  >  文章  >  数据库  >  为什么从 Node.js 连接到 MySQL 时会出现'ER_NOT_SUPPORTED_AUTH_MODE”错误?

为什么从 Node.js 连接到 MySQL 时会出现'ER_NOT_SUPPORTED_AUTH_MODE”错误?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-10 02:14:02294浏览

Why am I Getting

MySQL-Node.js 连接中的“ER_NOT_SUPPORTED_AUTH_MODE”错误故障排除

“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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn