errno: 1251, sqlMessage: '客户端不支持服务器请求的认证协议;考虑升级 MySQL 客户端

Pra*_*nde 5 mysql mysql-workbench node.js express

我正在 nodejs 中创建简单的 api 项目。为此,我安装了 8.0.11 版的 mySql 工作台。我创建了配置文件 dbConnection.js 文件,并在 dbconnection.js 文件中编写了以下代码:

    var mysql = require('mysql');
var path = require('path');
var config = require(path.resolve('./', 'config'))

var connection = mysql.createConnection({
    host: config.databaseHost,
    user: config.databaseUser,
    password: config.databasePassword,
    database: config.databaseDatabaseName,
    multipleStatements: true
});

connection.connect(function (err) {
    if (err) {
        console.log('Error connecting to Database',err);
        return;
    }
    console.log('Connection established');
});
module.exports = connection;
Run Code Online (Sandbox Code Playgroud)

我面临以下错误:

代码:'ER_NOT_SUPPORTED_AUTH_MODE',errno:1251,sqlMessage:'客户端不支持服务器请求的认证协议;考虑升级 MySQL 客户端',sqlState:'08004',fatal:true

注意:我让我的配置文件尽可能简单,用户 = root ,密码 = root ,主机 = localhost。

小智 16

安装mysql2而不是mysql

npm install mysql2
Run Code Online (Sandbox Code Playgroud)

然后将其添加到index.js

const mysql = require('mysql2')
Run Code Online (Sandbox Code Playgroud)


Moh*_*eem 8

打开终端并登录:

mysql -uroot -p
Run Code Online (Sandbox Code Playgroud)

(然后输入您的密码)

在那之后:

use mysql;
update user set authentication_string=password(''), plugin='mysql_native_password' where user='root';
Run Code Online (Sandbox Code Playgroud)

最后重要的是重置mysql服务:

sudo service mysql restart
Run Code Online (Sandbox Code Playgroud)


Jac*_*ana 8

一旦你在你的 MySQL 连接函数中建立了你的主机、root、密码等......将以下内容粘贴到你试图在工作台中连接的数据库中:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_current_password';
Run Code Online (Sandbox Code Playgroud)

返回终端并<file name.js>再次运行节点

  • 此解决方案是解决问题的最快且最简单的方法 (3认同)

Man*_*aya 8

您必须重新配置 MySQL 服务器。为此,请按照以下步骤操作。

1)打开mysql intsaller

2)点击重新配置(左侧mysql服务器)

3)转到“身份验证方法”选项卡(单击“下一步”两次。)

4)然后选择单选按钮“使用旧身份验证方法”。点击下一步。

5)输入您的密码。单击“检查”。转到“应用配置”(单击“下一步”两次)。

6)单击“执行”。然后完成。

就是这样。享受黑客攻击!!


Fel*_*aro 6

使用 mysql 在节点 v17 中收到错误 1251

\n
\n\xe2\x9d\x8c // 不起作用:errno 1251 ER_NOT_SUPPORTED_AUTH_MODE\n\n从 'mysql' 导入 mysql;\n
\n

尝试mysql从节点中删除并将其替换为mysql2

\n
纱线删除'mysql'
\n
纱线添加'mysql2'
\n
\n\xe2\x9c\x85 从 'mysql2' 导入 mysql2;\n
\n

这为我解决了这个问题!

\n


小智 5

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'current password';
Run Code Online (Sandbox Code Playgroud)