提问者:小点点

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


我正在nodejs中创建简单的api项目。

为此,我安装了8.0.11版的mySql工作台。我创建了配置文件、dbConntion. js文件,并在dbConntion.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:'Client不支持服务器请求的身份验证协议;考虑升级MySQL客户端',sqlState:'08004',fatal:true

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


共3个答案

匿名用户

一旦您建立了主机、root、密码

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_current_password';

返回终端并运行node

匿名用户

打开终端并登录:

mysql -u root -p

(然后输入您的密码)

在那之后:

USE mysql;

UPDATE user SET authentication_string=password(''), plugin='mysql_native_password' WHERE user='root';

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

sudo service mysql restart

匿名用户

安装mysql2而不是mysql

npm install mysql2

然后将其添加到index. js

const mysql = require('mysql2')