You need to enable JavaScript to run this app. MySQL读取.env配置连接时报ER_ACCESS_DENIED_ERROR错误是什么原因
优惠活动
大模型
产品
解决方案
定价
更多

MySQL读取.env配置连接时报ER_ACCESS_DENIED_ERROR错误是什么原因

问题原因

你遇到的报错是环境变量读取失败导致的,具体有以下几个错误点:

  • .env文件语法不符合dotenv库的规范:dotenv默认要求键值对使用=分隔,你当前使用的冒号:作为分隔符,所有变量都无法被正确读取,process.env.HOST、process.env.USER等取值全为undefined,最终拼接连接配置时出现空用户名、空密码的情况,和你收到的报错完全匹配。
  • 你当前贴出的数据库配置代码中user、password、database还是硬编码状态,如果你实际运行的代码已经替换为读取环境变量,本质还是上面的语法问题导致取值失败。
  • 额外常见排查点:.env文件需要放在项目根目录(和package.json同级),如果放在子目录下需要手动指定读取路径,另外要确认文件后缀就是.env,没有隐藏的.txt等后缀。

修复方案

  1. 修正.env文件的语法,将所有冒号替换为等号:
HOST=localhost
USER=root
PASSWORD=pass1
DATABASE=notetakingapp
  1. 修正数据库连接配置,统一读取环境变量:
const mysql = require('mysql');
require('dotenv').config();

// 调试时可以打开下面的打印,确认环境变量是否读取正常,上线前删除即可
// console.log('环境变量校验:', process.env.HOST, process.env.USER, process.env.PASSWORD)

const connection = mysql.createConnection({
    host: process.env.HOST,
    user: process.env.USER,
    password: process.env.PASSWORD,
    database: process.env.DATABASE,
    multipleStatements: true
  })
  
  connection.connect((err) => {
    if (err) throw err;
    console.log('Database Connected')
  })

module.exports = connection;
  1. 如果你的.env文件不在项目根目录,需要手动指定读取路径,比如存放在config文件夹下时,修改dotenv加载代码:
require('dotenv').config({ path: './config/.env' })

内容的提问来源于stack exchange,提问作者Fatima sami

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 22:15:01