Node.js & MySQL - 错误:1251 - 客户端不支持服务器请求的身份验证协议;考虑升级 MySQL 客户端
Posted
技术标签:
【中文标题】Node.js & MySQL - 错误:1251 - 客户端不支持服务器请求的身份验证协议;考虑升级 MySQL 客户端【英文标题】:Node.js & MySQL - Error: 1251 - Client does not support authentication protocol requested by server; consider upgrading MySQL client 【发布时间】:2018-10-04 03:15:19 【问题描述】:现在我只有这个代码:
const Sequelize = require('sequelize');
const sequelize = new Sequelize('database', 'root', 'passwd',
host: 'localhost',
dialect: 'mysql',
// http://docs.sequelizejs.com/manual/tutorial/querying.html#operators
operatorsAliases: false
);
sequelize
.authenticate()
.then(() =>
console.log('Connection has been established successfully.');
)
.catch(err =>
console.error('Unable to connect to the database:', err);
);
但是当我尝试运行 .js 时,我得到了this error。我已经尝试了很多解决方案,包括我找到的more often but it didn't work。所以现在我不知道该怎么办。有人可以帮帮我吗?
谢谢
【问题讨论】:
您为您的服务器配置了哪些身份验证模式? caching_sha2_password 【参考方案1】:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'
为我工作。 root密码改成'password'
【讨论】:
这对我也有用。我认为这是由于在新版本的mysql中使用SHA256进行密码存储。 我正在处理 Docker 容器,我需要将查询localhost
更改为 %
,因为我正在连接到不同的主机名。它有效!
感谢您的回答,它对我有用,并且节省了大量时间。谢谢。【参考方案2】:
把插件改成mysql_native_password或许能解决问题!
use mysql;
update user set authentication_string=password(''), plugin='mysql_native_password' where user='root';
【讨论】:
实际上是将插件更改为 mysql_native_password 但不是这样,因为正如我在上一篇文章中所说的那样,我尝试过,但语法错误。我搜索了 MySQL 文档,发现:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';这行得通!不过感谢您的帮助:) 澄清一下,语法可能有点不同,在我的例子中,它是... set authentication_string='password', ...
【参考方案3】:
基本上当我当时尝试连接到 Mysql 查询浏览器时,我遇到了这个问题。
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root'
为我工作。 root密码更改为'root'
【讨论】:
【参考方案4】:我发现我是由错误的参数引起的。
database: 'abc',
username: undefined,
password: 'efsefs',
用户名未定义,但错误是“考虑升级 MySQL 客户端” 于是修改用户名为true,错误解决。
【讨论】:
以上是关于Node.js & MySQL - 错误:1251 - 客户端不支持服务器请求的身份验证协议;考虑升级 MySQL 客户端的主要内容,如果未能解决你的问题,请参考以下文章
node.js & mysql - 如何获取最后插入的 ID?
node.js + MySQL & JSON-result - 回调问题 & 对客户端无响应