Node连接MySQL报错ER_NOT_SUPPORTED_AUTH_MODEError

在Node服务中连接mysql数据库,启动服务时报错:

nodejs.ER_NOT_SUPPORTED_AUTH_MODEError: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server

Node连接MySQL报错ER_NOT_SUPPORTED_AUTH_MODEError

报错原因

我本地安装的mysql版本是8.0,默认的加密方式是caching_sha2_password,而这种加密方式是node-mysql(我在项目中使用的是egg-mysql)这类模块的较多版本中尚未支持的,因此提示客户端尚不支持服务所需的认证协议。

解决方案

修改本地mysql数据库登录使用的加密协议即可。可视化界面或命令行操作修改密码的加密方式。

命令行操作语句为:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '您的新密码';

(注意,命令行中分号或\g才表示sql语句的结束,直接换行并不会执行sql语句)

Node连接MySQL报错ER_NOT_SUPPORTED_AUTH_MODEError

执行成功后重新启动node服务即可发现报错消失。

Node连接MySQL报错ER_NOT_SUPPORTED_AUTH_MODEError

参考链接https://blog.****.net/kkkloveyou/article/details/91623834