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

使用Docker Compose部署Node+MySQL容器,TypeORM连接遇权限拒绝错误

解决TypeORM连接Docker MySQL容器时的权限拒绝错误

错误提示Error: Access denied for user ''@'172.29.0.3' (using password: YES)的核心原因是连接MySQL时未传入用户名,同时还有几处配置遗漏和重复问题,以下是具体修复步骤:

1. 补全TypeORM配置的必填字段

当前TypeORM的DataSource配置缺少连接MySQL必须的username(用户名)和database(数据库名)字段,修改后配置如下:

import {DataSource} from 'typeorm';
import * as dotenv from 'dotenv';

dotenv.config();

export const appDataSource = new DataSource({
    type: 'mysql',
    host: process.env.MYSQL_HOST,
    port: 3306,
    username: process.env.MYSQL_USER, // 新增用户名参数
    password: process.env.MYSQL_PASSWORD,
    database: process.env.MYSQL_NAME, // 新增数据库名参数
    entities:[
        'src/entities/*.js'
    ],
    synchronize: true,
    logging: true
});

2. 清理.env文件的重复配置

你的.env文件重复定义了MYSQL_PASSWORD,删除其中一个,保持配置唯一性:

MYSQL_USER = root
MYSQL_PASSWORD = password 
MYSQL_NAME = test
MYSQL_HOST = db

3. 完善Docker Compose配置

当前MySQL容器未自动创建test数据库,且app服务缺少MYSQL_USER环境变量,另外depends_on仅保证容器启动顺序,不代表数据库服务就绪,需添加健康检查确保数据库可用后再启动app:

version: '3.8'
services:
  db:
    image: mysql
    restart: always
    ports:
      - '3306:3306'
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: test # 启动时自动创建test数据库
    healthcheck: # 健康检查验证数据库服务状态
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-ppassword"]
      interval: 5s
      timeout: 5s
      retries: 5
  app:
    build: .
    command: npm start
    volumes:
      - .:/usr/app/
    ports:
      - '8000:8000'
    depends_on:
      db:
        condition: service_healthy # 等待数据库健康检查通过再启动
    environment:
      MYSQL_HOST: db
      MYSQL_NAME: test
      MYSQL_PASSWORD: password
      MYSQL_USER: root # 新增用户名环境变量

4. 确保应用等待数据库连接成功再启动

在你的Node.js启动脚本中,添加数据库初始化逻辑,确保连接成功后再启动服务:

appDataSource.initialize()
  .then(() => {
    console.log("数据库连接成功");
    // 这里启动你的HTTP服务或其他业务逻辑
  })
  .catch((err) => {
    console.error("数据库连接失败:", err);
    process.exit(1); // 连接失败时退出进程
  });

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 03:05:22