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

Posted

技术标签:

【中文标题】errno: 1251, sqlMessage: \'客户端不支持服务器请求的认证协议;考虑升级 MySQL 客户端【英文标题】:errno: 1251, sqlMessage: 'Client does not support authentication protocol requested by server; consider upgrading MySQL clienterrno: 1251, sqlMessage: '客户端不支持服务器请求的认证协议;考虑升级 MySQL 客户端 【发布时间】:2018-12-11 09:03:44 【问题描述】:

我正在 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', 错误号:1251, sqlMessage: '客户端不支持服务器请求的认证协议;考虑升级 MySQL 客户端', sqlState: '08004', 致命:是的

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

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

此解决方案是解决问题的最快和最简单的方法【参考方案2】:

打开终端并登录:

mysql -u root -p

(然后输入您的密码)

之后:

USE mysql;

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

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

sudo service mysql restart

【讨论】:

【参考方案3】:

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

1)打开mysql intsaller

2)点击Reconfigure(到左侧的mysql服务器)

3) 转到身份验证方法标签(点击下一步两次。)

4) 然后选择单选按钮Use Legacy Authentication Method。点击下一步。

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

6) 点击执行。然后完成。

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

【讨论】:

【参考方案4】:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'current password';

【讨论】:

【参考方案5】:

我也遇到了同样的问题。它不适用于root用户。我创建了一个新用户(使用 mySQL 工作台)并授予新用户权限。然后我尝试了新用户,它工作正常。 see workbench settings

【讨论】:

【参考方案6】:

安装mysql2而不是mysql

npm install mysql2

然后将这个添加到 index.js

const mysql = require('mysql2')

【讨论】:

以上是关于errno: 1251, sqlMessage: '客户端不支持服务器请求的认证协议;考虑升级 MySQL 客户端的主要内容,如果未能解决你的问题,请参考以下文章

“sqlMessage”:“您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册以获取正确的语法以使用 [重复]

hdu 1251 统计难题(字典树)

hdu 1251 统计难题(字典树)

HDU1251 裸字典树

Win1251->UTF16转换

sql:从 cp1251 转换为 utf8