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 服务器版本相对应的手册以获取正确的语法以使用 [重复]