node连接mysql:R_NOT_SUPPORTED_AUTH_MODEClientdoesnotsupportauthenticationprotocolrequestedbyserver

解决node或者eggjs连接Docker中的mysql时候:ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client 错误

我在用eggjs搭建后台项目, 连接本地用Docker启动的mysql数据库时候, 报了一个错误

ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL clien

这个错误的原因是: 最新版本的mysql账号密码用的是最新的加密方式: 目前node还不支持这个连接方式

进入mysql数据库查询

select user,host, plugin FROM user;

node连接mysql:R_NOT_SUPPORTED_AUTH_MODEClientdoesnotsupportauthenticationprotocolrequestedbyserver

解决方法:

​修改mysql数据库中的root的密码加密方法就行了;
use mysql
然后运行 ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

password修改为你的密码

然后在查询一下select user,host, plugin FROM user;

node连接mysql:R_NOT_SUPPORTED_AUTH_MODEClientdoesnotsupportauthenticationprotocolrequestedbyserver

OK!

最后别忘了刷新一下权限

运行FLUSH PRIVILEGES

再使用node或egg连接数据库就可以了!