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

时间:2018-07-03 06:31:29

标签: mysql node.js express mysql-workbench

我正在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;

并且我遇到以下错误:

代码:“ ER_NOT_SUPPORTED_AUTH_MODE”,   errno:1251,   sqlMessage:'客户端不支持服务器请求的身份验证协议;考虑升级MySQL客户端”,   sqlState:'08004',   致命:正确

注意:我已尽可能简化我的配置文件,用户= root,密码= root,主机=本地主机。

5 个答案:

答案 0 :(得分:1)

打开终端并登录:

mysql -uroot -p

(然后输入您的密码)

之后:

use mysql;
update user set authentication_string=password(''), plugin='mysql_native_password' where user='root';

最后一件重要的事情是重置mysql服务:

sudo service mysql restart

答案 1 :(得分:1)

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

1)。打开 mysql集成程序

2)单击重新配置(位于左侧的mysql服务器)

3)(进入身份验证方法标签(两次单击 Next )。

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

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

6)点击 Execute 。然后完成。

就是这样。享受黑客!!

答案 2 :(得分:0)

一旦在MySQL连接函数中建立了主机,根目录,密码&等,即可。将以下内容粘贴到要在工作台中尝试连接的数据库中:

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

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

答案 3 :(得分:0)

我也有同样的问题。对于root用户仍然不起作用。我创建了一个新用户(通过mySql工作台),并赋予了新用户特权。然后,我尝试了这个新用户,并且效果很好。 see workbench settings

答案 4 :(得分:0)

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