NodeJS MySQL客户端不支持身份验证协议

Rup*_*esh 5 mysql database backend node.js

当我尝试与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
Run Code Online (Sandbox Code Playgroud)

小智 17

尝试如下更改密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'your new password'; 
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your new password';
Run Code Online (Sandbox Code Playgroud)

  • @Jessica MySQL 8.0 使用 caching_sha2_password 作为默认身份验证插件,而不是大多数客户端支持的 MySQL 5.7 默认 mysql_native_password,这就是为什么您需要显式允许给定用户进行身份验证: ALTER USER 'user' IDENTIFIED WITH mysql_native_password BY 'password' (3认同)
  • 很好的答案!这解决了我的问题!你能解释一下为什么这有效吗? (2认同)

小智 13

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

FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)

“密码”是您必须更改已有的密码,否则您将修改为新密码