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

Windows WSL下执行npm typeorm迁移时Postgres密码认证失败

解决WSL环境下本地Node应用连接Docker Postgres的密码验证失败问题

核心原因

WSL的网络栈与Windows Docker Desktop的容器网络并非直接连通,加上Postgres默认仅允许容器内本地连接的配置,导致外部(WSL内的应用)无法通过正确的网络路径完成密码验证。

具体解决步骤

1. 修正Docker Compose的Postgres服务配置

更新docker-compose.yaml中的Postgres服务,确保网络和连接权限配置正确:

services:
  postgres:
    image: postgres:14-alpine
    ports:
      - "5432:5432"  # 端口映射到Windows主机,WSL通过host.docker.internal访问
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: your_password  # 与.env文件保持完全一致
      POSTGRES_DB: your_db_name
    command: >
      bash -c "
        echo 'host all all 0.0.0.0/0 md5' >> /var/lib/postgresql/data/pg_hba.conf &&
        postgres -c listen_addresses=*
      "
    volumes:
      - postgres_data:/var/lib/postgresql/data
volumes:
  postgres_data:
  • command部分:先修改pg_hba.conf允许所有IP通过密码(md5)连接,再设置Postgres监听所有网卡地址
  • 务必保证POSTGRES_PASSWORD与你的.env文件内容完全匹配

2. 开启Docker Desktop的WSL集成

打开Docker Desktop → 设置 → Resources → WSL Integration,确保你正在使用的WSL发行版(如Ubuntu)处于启用状态,重启Docker Desktop使配置生效。

3. 调整应用连接配置

在ormconfig.ts或数据库连接配置中,将数据库主机地址改为host.docker.internal,替代localhost、127.0.0.1或容器IP:

// ormconfig.ts示例
export default {
  type: 'postgres',
  host: 'host.docker.internal',  // 关键:WSL通过该地址桥接Windows上的Docker容器
  port: 5432,
  username: process.env.POSTGRES_USER,
  password: process.env.POSTGRES_PASSWORD,
  database: process.env.POSTGRES_DB,
  migrations: ['src/migrations/**/*.ts'],
  cli: {
    migrationsDir: 'src/migrations',
  },
};

4. 验证网络连通性与密码正确性

  • 在WSL终端执行nc -zv host.docker.internal 5432,确认端口能正常连通
  • 进入Postgres容器验证密码:
    docker exec -it <postgres_container_id> psql -U postgres
    # 输入密码后能登录则密码正确;若需重置密码,执行:\password postgres
    

5. 排查防火墙干扰

  • 临时关闭Windows防火墙测试是否能正常连接,若恢复则需添加Docker相关端口的放行规则
  • 检查WSL内的防火墙(如Ubuntu的ufw),确保5432端口对外开放

为什么Mac没有这个问题?

Mac下Docker使用与本地系统共享的网络栈,容器端口直接映射到本地回环地址,因此localhost即可正常访问;而WSL是独立的虚拟机环境,需要通过host.docker.internal桥接Windows主机的Docker网络。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 08:27:20