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

如何解决Node.js连接MySQL时的ER_ACCESS_DENIED_ERROR错误

注册/登录页面开发中MySQL连接权限错误排查

我用Node.js搭配Express、MySQL、dotenv、hbs、bcryptjs和nodemon开发注册/登录页面,运行代码时控制台返回错误:

{
  "code": "ER_ACCESS_DENIED_ERROR",
  "errno": 1045,
  "sqlMessage": "Access denied for user ''@'localhost' (using password: NO)",
  "sqlState": "28000",
  "fatal": true
}

已用管理员用户运行,也尝试过SQL权限赋予操作但无效,两台不同电脑(一台有管理员权限、一台没有)都出现该错误,怀疑问题出在代码或配置结构而非SQL本身。

当前代码与配置

app.js

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

const db = mysql.createConnection({
    host: process.env.DATABASE_HOST,
    user: process.env.DATABASE_USER,
    password: process.env.DATABASE_PASSWORD,
    database: process.env.DATABASE
});

db.connect((error) => {
    if(error) {
        console.log(error)
    } else {
        console.log("MySQL connected!")
    }
})

.env文件

DATABASE = logindb
DATABASE_HOST = localhost
DATABASE_ROOT = root
DATABASE_PASSWORD = 

已尝试的SQL操作

create database logindb;

CREATE TABLE users (
id INT(11) NOT NULL AUTO_INCREMENT,
NAME VARCHAR(100),
email VARCHAR(100),
PASSWORD VARCHAR(255),
PRIMARY KEY (id)
);

GRANT ALL PRIVILEGES ON users.* TO 'anajo'@'localhost' IDENTIFIED BY '';

FLUSH privileges;

SHOW GRANTS FOR 'anajo'@'localhost';

问题原因与解决办法

1. 配置变量不匹配

代码里数据库连接用的是process.env.DATABASE_USER,但.env文件里对应的变量名是DATABASE_ROOT,导致user参数为空字符串,这就是错误提示中''@'localhost'的直接原因。

解决:
修改.env文件,把变量名改成DATABASE_USER:

DATABASE = logindb
DATABASE_HOST = localhost
DATABASE_USER = root
DATABASE_PASSWORD = 

或者修改app.js里的变量引用为process.env.DATABASE_ROOT。

2. 权限设置有误(若使用自定义用户anajo)

如果打算用anajo用户连接数据库,需要:

  • 在.env里设置DATABASE_USER = anajo
  • 修正SQL权限命令,应该授权用户访问整个logindb数据库,而不是仅users表:
GRANT ALL PRIVILEGES ON logindb.* TO 'anajo'@'localhost' IDENTIFIED BY '';
FLUSH PRIVILEGES;

3. 验证用户登录权限

确认所选用户(root或anajo)可以无密码登录本地MySQL:
打开终端输入mysql -u root(或mysql -u anajo),如果能正常进入MySQL控制台,说明用户登录权限没问题。

最后重启Node服务,测试数据库连接是否正常。

内容的提问来源于stack exchange,提问作者Ana Jullia

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 23:49:52