场景
如果使用MySQL 8.0,那么在启动CabloyJS后端服务时,经常会出现错误: nodejs.ER_NOT_SUPPORTED_AUTH_MODEError
原因
MySQL 8.0引入了一个新的加密方式caching_sha2_password
,而且是默认设置,因此root用户和新增加的用户都默认采用此加密方式对密码进行加密
https://dev.mysql.com/doc/refman/8.0/en/caching-sha2-pluggable-authentication.html
然而最新的MySQL NodeJS模块并未完全支持MySQL 8.0的caching_sha2_password
加密方式,从而导致连接错误
解决方案
现有用户
修改用户root的密码,并指定mysql_native_password
的加密方式
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
新建用户
使用mysql_native_password
创建新用户
CREATE USER 'newuser'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
评论: