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

u7up0aaq  于 2021-06-20  发布在  Mysql
关注(0)|答案(5)|浏览(550)

我正在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\u not\u supported\u auth\u mode',errno:1251,sqlmessage:'client不支持服务器请求的身份验证协议;考虑升级mysql client',sqlstate:'08004',fatal:true
注意:我的congif尽可能简单,user=root,password=root,host=localhost。

mi7gmzs6

mi7gmzs61#

打开终端并登录:

mysql -uroot -p

(然后键入密码)
之后:

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

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

sudo service mysql restart
ztmd8pv5

ztmd8pv52#

你必须重新配置mysql服务器。为此,请遵循以下步骤。
1) 打开mysql intsaller。
2) 单击reconfigure(左边的mysql服务器)
3) 转到“身份验证方法”选项卡(单击“下一步”两次)
4) 然后选择单选按钮use legacy authentication method。单击“下一步”。
5) 输入密码。单击检查。转到“应用配置”(单击“下一步”两次)。
6) 单击执行。然后完成。
就这样。享受黑客!!

ipakzgxi

ipakzgxi3#

我也有同样的问题。但它对root用户仍然不起作用。我创建了一个新用户(来自mysql工作台)并将权限授予新用户。然后我尝试了这个新用户,效果很好。请参见工作台设置

mwkjh3gx

mwkjh3gx4#

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

ewm0tg9j5#

一旦在mysql连接函数中建立了主机、根目录、密码等。。将以下内容粘贴到您试图在workbench中连接的数据库中:

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

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

相关问题