解决Node.js mysql模块不支持MySQL8的认证协议(ER_NOT_SUPPORTED_AUTH_MODE)

前言

MySQL模块(项目地址为https://github.com/mysqljs/mysql)是一个开源的、JavaScript编写的MySQL驱动,可以在Node.js应用中来操作MySQL。但在使用过程中,出现了“ER_NOT_SUPPORTED_AUTH_MODE”问题。

首先安装MySQL模块

npm install mysql --save

安装

有个错,不知道是啥,反正装上了,继续

报错信息

当我试图使用mysql模块来连接MySQL 8时,出现了如下错误信息:

报错

出错原因

导致这个错误的原因是,目前,最新的mysql模块并未完全支持MySQL 8的“caching_sha2_password”加密方式,而“caching_sha2_password”在MySQL 8中是默认的加密方式。因此,下面的方式命令是默认已经使用了“caching_sha2_password”加密方式,该账号、密码无法在mysql模块中使用。

解决方法

解决方法是从新修改用户root的密码,并指定mysql模块能够支持的加密方式:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456'

> OK

> 时间: 0.558s

上述语句,显示指定了使用“mysql_native_password”的加密方式。这种方式是在mysql模块能够支持。

再此运行应用,可以看到如下的控制台输出信息:

$ node test.js

The solution is:  2

The solution is:  2是正确的执行结果。

你可能感兴趣的:(解决Node.js mysql模块不支持MySQL8的认证协议(ER_NOT_SUPPORTED_AUTH_MODE))