【解决方案】使用sequelize连接mysql数据库出错

tech2026-10-06  0

问题描述

在使用 sequelize 连接 mysql 数据库时,会出现这个错误:

SequelizeConnectionError: Client does not support authentication protocol requested by server; consider upgrading MySQL client

大概的意思就是: MySQL 拒绝我们的连接请求,让我们尝试升级 MySQL 版本。

升级版本这种操作,改动比较大,可能会影响线上数据服务。因此,采用了一个影响范围较小的方式。

解决方案

步骤一:登录本机数据库 # 登录本机数据库 $ mysql -uroot -p<local_password> # 选择数据库 mysql > use <db_name>;

步骤二:修改本地用户密码 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<local_password>'; Query OK, 0 rows affected (0.06 sec)

步骤三:更新状态 flush privileges; Query OK, 0 rows affected (0.06 sec)

完整代码

const Sequelize = require('sequelize'); const sequelize = new Sequelize('ci', 'root', '123', { host: 'localhost', dialect: 'mysql', pool: { max: 5, min: 0, }, operatorsAliases: false });

问题原因

修改密码校验方式的原因是 8.0 版的 mysql 使用的 caching_sha2_password 没有被当前使用的 mysql.js 支持

最新回复(0)