MySQL读取.env配置连接时报ER_ACCESS_DENIED_ERROR错误是什么原因
问题原因
你遇到的报错是环境变量读取失败导致的,具体有以下几个错误点:
.env文件语法不符合dotenv库的规范:dotenv默认要求键值对使用=分隔,你当前使用的冒号:作为分隔符,所有变量都无法被正确读取,process.env.HOST、process.env.USER等取值全为undefined,最终拼接连接配置时出现空用户名、空密码的情况,和你收到的报错完全匹配。- 你当前贴出的数据库配置代码中
user、password、database还是硬编码状态,如果你实际运行的代码已经替换为读取环境变量,本质还是上面的语法问题导致取值失败。 - 额外常见排查点:
.env文件需要放在项目根目录(和package.json同级),如果放在子目录下需要手动指定读取路径,另外要确认文件后缀就是.env,没有隐藏的.txt等后缀。
修复方案
- 修正
.env文件的语法,将所有冒号替换为等号:
HOST=localhost USER=root PASSWORD=pass1 DATABASE=notetakingapp
- 修正数据库连接配置,统一读取环境变量:
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;
- 如果你的
.env文件不在项目根目录,需要手动指定读取路径,比如存放在config文件夹下时,修改dotenv加载代码:
require('dotenv').config({ path: './config/.env' })
内容的提问来源于stack exchange,提问作者Fatima sami
相关产品推荐
相关产品推荐

