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

使用.env变量连接MySQL时出现权限拒绝错误的求助

问题:使用.env变量连接MySQL时出现权限拒绝错误

直接写死数据库配置能正常连接,但通过.env变量加载配置时,出现以下权限拒绝错误:

Error: Access denied for user ''@'localhost' (using password: YES)
    at Packet.asError 
  code: 'ER_ACCESS_DENIED_ERROR',
  errno: 1045,
  sqlState: '28000',
  sqlMessage: "Access denied for user ''@'localhost' (using password: YES)",
  sql: undefined

相关文件内容

server.js代码

const mysql = require('mysql2')
const connection = mysql.createConnection({
  host: process.env.DB_HOST,
  user: process.env.DB_USER,
  password: process.env.DB_PASSWORD,
  database: process.env.DB_DATABASE,
})

.env文件内容

DB_HOST=127.0.0.1
DB_USER=root
DB_PASSWORD=my password
DB_DATABASE=my db name

解决步骤

  • 安装并加载dotenv包
    Node.js不会自动读取.env文件,需手动加载。先安装依赖:

    npm install dotenv --save
    

    在server.js最顶部添加加载代码:

    require('dotenv').config()
    const mysql = require('mysql2')
    // 后续连接代码保持不变
    
  • 检查.env文件格式

    • 变量名和值之间不能有空格,比如不能写成DB_USER = root
    • 密码或数据库名含空格时无需加引号,当前DB_PASSWORD=my password格式合法
    • 确保.env文件放在项目根目录,与server.js同级
  • 验证环境变量加载情况
    在server.js中添加日志,确认变量是否读取成功:

    require('dotenv').config()
    console.log('DB_USER:', process.env.DB_USER) // 应输出root
    console.log('DB_HOST:', process.env.DB_HOST) // 应输出127.0.0.1
    const mysql = require('mysql2')
    // 后续连接代码
    

    如果输出为空,需指定.env文件路径:

    require('dotenv').config({ path: './.env' }) // 确保路径正确
    
  • 排查VSCode JDBC客户端配置
    若在VSCode JDBC客户端中使用.env变量,需确认该客户端是否支持读取.env文件。部分客户端需手动配置变量,或安装插件识别.env。可先手动填写配置参数测试连接,排查是代码问题还是客户端配置问题。

内容的提问来源于stack exchange,提问作者Ruslan Karpetskyu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 17:27:45