错误编号: 1251,SQL消息: '客户端不支持服务器请求的身份验证协议,请考虑升级MySQL客户端。

16

我正在使用nodejs创建简单的API项目。

为此,我已安装版本为8.0.11的mySql workbench。 我已创建配置文件、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;

我遇到了以下错误:

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

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

12个回答

0
我不想操作我的“root”用户,因为我在我的Java应用程序中使用它,所以我决定为NodeJS的事务创建一个新的用户。
我正在使用MySQL 8.0.31和Node的MySQL版本"2.18.1"。这个解决方案真正解决了我的问题:
首先,使用root访问权限登录到MySQL服务器:
mysql -u <MYSQL_USER> -p <MYSQL_PASSWORD>

一旦进入MySQL shell,运行以下命令:
create user '<YOUR_USERNAME>'@'localhost' IDENTIFIED WITH 'mysql_native_password' BY '<YOUR_PASSWORD>';

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';

FLUSH PRIVILEGES;

0

1.复制下面的代码

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'current password'

2.粘贴到您要连接的表格中

3.运行雷电图标

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接