You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NextJS使用环境变量初始化MySQL连接触发ER_NOT_SUPPORTED_AUTH_MODE错误

问题分析与解决方案

问题重现

硬编码数据库配置时连接完全正常,但改用环境变量配置后触发以下认证错误:

{
  code: 'ER_NOT_SUPPORTED_AUTH_MODE',
  errno: 1251,
  sqlMessage: 'Client does not support authentication protocol requested by server; consider upgrading MySQL client',
  sqlState: '08004',
  fatal: true
}

当前配置文件 .env.local 内容:

MYSQL_HOST: localhost
MYSQL_USER: root
MYSQL_PASSWORD:************
MYSQL_DB:***

数据库连接代码:

const mysql = require("mysql");

var db = mysql.createConnection({
  host: process.env.MYSQL_HOST,
  user: process.env.MYSQL_USER,
  password: process.env.MYSQL_PASSWORD,
  database: process.env.MYSQL_DB,
});
db.connect((err) => {
  if (err) {
    console.log(err);
  } else {
    console.log("connected to db");
  }
});

module.exports = db;

解决方案

1. 修复.env文件格式错误

dotenv 模块默认使用**等号(=)**而非冒号(:)定义环境变量,当前格式会导致参数无法正确读取。修改 .env.local 为:

MYSQL_HOST=localhost
MYSQL_USER=root
MYSQL_PASSWORD=************
MYSQL_DB=***

2. 确保dotenv模块正确加载

如果项目未安装 dotenv,先执行安装:

npm install dotenv --save

然后在数据库连接代码的最顶部添加加载逻辑,指定读取 .env.local 文件:

require('dotenv').config({ path: '.env.local' });
const mysql = require("mysql");

// 后续连接代码保持不变

3. 验证环境变量读取状态

可以临时添加打印代码,确认参数是否正确加载:

require('dotenv').config({ path: '.env.local' });
const mysql = require("mysql");

// 打印参数排查问题
console.log('数据库地址:', process.env.MYSQL_HOST);
console.log('用户名:', process.env.MYSQL_USER);

var db = mysql.createConnection({
  host: process.env.MYSQL_HOST,
  user: process.env.MYSQL_USER,
  password: process.env.MYSQL_PASSWORD,
  database: process.env.MYSQL_DB,
});
// ...后续代码

4. 兼容MySQL 8.0+新认证方式

若上述步骤修复后仍出现认证错误,说明当前 mysql 包不支持MySQL 8.0+默认的 caching_sha2_password 认证插件,切换为 mysql2 包即可解决:

npm uninstall mysql
npm install mysql2

修改连接代码中的引入:

require('dotenv').config({ path: '.env.local' });
const mysql = require("mysql2"); // 替换为mysql2

// 后续连接代码保持不变

内容的提问来源于stack exchange,提问作者Jathin Kotian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 16:48:58