我正在使用Node,Express和MySql构建应用程序。我正在使用MySql 8.0版。我正在使用Sequelize和MySQL2 npm软件包连接到我的数据库。如Sequelize文档中所述,我已经按如下方式建立了数据库连接:
config.js
const Sequelize = require("sequelize");
module.exports = new Sequelize("call_on_me", "root", "my password", {
host: "localhost",
dialect: "mysql",
operatorAliases: false,
pool: {
max: 5,
min: 0,
acquire: 30000,
idle: 10000
}
})
然后我在服务器文件中测试连接,如下所示:
server.js
const db = require("./config/config");
db.authenticate()
.then(() => console.log("Database connected!"))
.catch(err => console.log("Error: " + err));
启动服务器时,收到一条错误消息,内容为:
错误:SequelizeConnectionError:客户端不支持服务器请求的身份验证协议。考虑升级MySQL客户端
据我了解,8.0已经达到了目前的最高水平,所以我找不到从该版本升级的任何信息。这使我相信我的配置连接中存在某种错误。我想念什么吗?还是我只是无法理解一些我应该了解的基本知识?
如果您还需要查看另一段代码,请告诉我。
在此先感谢您的帮助。
答案 0 :(得分:1)
您必须更改身份验证模式,以使其像以前的mysql版本一样工作
将此添加到您的my.cnf:
[mysqld]
default_authentication_plugin=mysql_native_password
在添加任何用户之前执行此操作。