MySQL 8.0使用新的认证插件:caching_sha2_password,而MySQL 5.7 使用的是mysql_native_password,目前很多Node.js的MySQL认证方式都是基于client-side,因而无法通过MySQL 8的认证。

一般有如下几个解决方法:

MySQL降级

将MySQL 8.0降级至MySQL 5.7版本,仍可使用 mysql_native_password 认证方式。

使用官方驱动

MySQL Connector/Node.js 由Oracle发布的官方MySQL 8驱动,用于Node.js语言。它继承了X DevAPI的功能,包含了CRUD和NoSQL基本操作。

账号兼容

不想降级?不想再花时间学习多一个库?我们可以创建(or修改)一个账号,该账号使用 mysql_native_password 库。

修改账号:

1
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'MyNewPass';

添加账号:

1
CREATE USER 'foo'@'localhost' IDENTIFIED WITH mysql_native_password BY 'bar';