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 - 回调问题 & 对客户端无响应

node.js mysql 池 beginTransaction & 连接

Node.js + MySQL 实现数据的增删改查

错误:握手不活动超时(MySQL + Node.js)

Node.js 的 MySQL 库中的错误