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

使用Sequelize连接PostgreSQL报错connect ECONNREFUSED 127.0.0.1:5432求助

解决Sequelize连接PostgreSQL时ECONNREFUSED错误

核心原因分析

报错connect ECONNREFUSED 127.0.0.1:5432说明Node.js应用无法连接到指定IP和端口的PostgreSQL服务,常见原因包括服务未运行、端口不匹配、连接权限限制或配置参数错误。

逐步排查与解决步骤

1. 确认PostgreSQL服务正在运行

  • Linux系统:执行命令检查服务状态

    sudo systemctl status postgresql
    

    若服务未运行,启动服务:

    sudo systemctl start postgresql
    

    设置开机自启(可选):

    sudo systemctl enable postgresql
    
  • Windows系统:打开服务管理器,找到postgresql-x64-xx(xx为版本号),确认状态为“正在运行”,未运行则右键启动。

2. 验证PostgreSQL监听端口是否为5432

PostgreSQL默认监听5432端口,但可能被修改:

  • 打开PostgreSQL配置文件postgresql.conf(Linux通常在/var/lib/postgresql/<version>/main/,Windows在C:\Program Files\PostgreSQL\<version>\data\)
  • 找到port参数,确认值为5432,若修改过,同步更新db.js中的port配置。

3. 检查PostgreSQL是否允许本地连接

PostgreSQL通过pg_hba.conf文件控制连接权限:

  • 打开pg_hba.conf文件(路径同上)
  • 确保存在以下配置(允许本地用户通过密码连接):
    host    all             all             127.0.0.1/32            scram-sha-256
    
    修改后重启PostgreSQL服务使配置生效:
    sudo systemctl restart postgresql
    

4. 核对Sequelize连接参数

检查db.js中的配置是否正确:

  • 数据库名:确认postgres数据库存在,可通过psql登录后执行\l查看所有数据库。
  • 用户名/密码:确认postgres用户的密码为12345,不确定则重置密码:
    sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD '12345';"
    
  • Host配置:若PostgreSQL运行在Docker容器中,localhost无法访问容器内服务,需将host改为容器IP或名称,例如:
    const sequelize = new Sequelize('postgres', 'postgres', '12345', { 
        dialect: 'postgres',
        host: 'postgres-container', // 容器名称或IP
        port: 5432
    });
    

5. 直接用psql测试连接

排除Sequelize的问题,用psql直接连接测试:

psql -h localhost -p 5432 -U postgres -d postgres

输入密码12345,若能成功登录,说明数据库服务正常,问题出在Sequelize配置或代码中;若登录失败,继续排查数据库服务本身。

额外注意事项

  • 确保Node.js项目已安装依赖:
    npm install pg sequelize
    
  • 若PostgreSQL在远程服务器,需检查防火墙是否开放5432端口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 11:55:36