NodeJS MySQL Client 不支持认证协议
Posted
技术标签:
【中文标题】NodeJS MySQL Client 不支持认证协议【英文标题】:NodeJS MySQL Client does not support authentication protocol 【发布时间】:2018-12-03 03:55:24 【问题描述】:当我尝试连接 mysql 8.0 时,我收到了这个错误。我怎样才能解决这个问题 ?
code: 'ER_NOT_SUPPORTED_AUTH_MODE',
errno: 1251,
sqlMessage: 'Client does not support authentication protocol requested by server;
consider upgrading MySQL client',
sqlState: '08004',
fatal: true
【问题讨论】:
服务器请求的身份验证协议是什么以及您使用的是哪个 - 这就是您应该寻找的地方 @Rupesh:更改plugin
字段,因为它设置为“auth_socket”。 use mysql; update user set authentication_string=password(''), plugin='mysql_native_password' where user='root';
查看此链接:Click here
解决方案***.com/questions/2101694/…
@Manav 我正在使用 mysql 8.0.11,我已经尝试过 mysql> use mysql; Database changed mysql> update user set password=PASSWORD("helloworld") where User='root';
它说:ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '("helloworld") where User='root'' at line 1
请检查您的语法/代码。错误与此有关。 Click here
【参考方案1】:
尝试如下更改密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'your new password';
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your new password';
【讨论】:
很好的答案!这解决了我的问题!你能解释一下为什么会这样吗? @Jessica MySQL 8.0 使用caching_sha2_password 作为默认身份验证插件,而不是 MySQL 5.7 默认 mysql_native_password,大多数客户端都支持,这就是为什么您需要明确允许给定用户的身份验证:ALTER USER 'user' IDENTIFIED WITH mysql_native_password BY '密码'【参考方案2】:ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
FLUSH PRIVILEGES;
“密码”是你必须更改你已有的密码,否则你将修改它以获得新的密码
【讨论】:
以上是关于NodeJS MySQL Client 不支持认证协议的主要内容,如果未能解决你的问题,请参考以下文章
安装最新版的mysql教程+Workbench 使用教程+nodejs链接数据库(解决consider upgrading MySQL client)
errno: 1251, sqlMessage: '客户端不支持服务器请求的认证协议;考虑升级 MySQL 客户端
nodejs 连接 mysql 出现 Client does not support authentication protocol requested by server; consider upg
mac nodejs连接mysql报错:Client does not support authentication protocol requested by server; consider up