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

求助:Node.js在VS Code中连接PostgreSQL数据库失败

Node.js连接PostgreSQL出现EACCES ::1:5432错误的解决办法

近期尝试在VS Code中通过Node.js连接PostgreSQL数据库时,遇到以下错误,已尝试谷歌上多种方法未解决:

Server is running at http://localhost:3000
node:internal/process/promises:288
  triggerUncaughtException(err, true /* fromPromise */);
  ^

Error: connect EACCES ::1:5432
    at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1495:16) {
  errno: -4092,
  code: 'EACCES',
  syscall: 'connect',
  address: '::1',
  port: 5432
}

Node.js v18.17.1

以下是针对性的排查和解决步骤:

  • 检查PostgreSQL的IPv6监听配置
    打开PostgreSQL的postgresql.conf配置文件,找到listen_addresses项,确保值包含::1或者*(允许所有IP地址),示例:

    listen_addresses = 'localhost,::1'
    

    修改后重启PostgreSQL服务生效。

  • 切换为IPv4地址连接
    错误显示程序尝试通过IPv6地址::1连接,可直接将连接字符串中的localhost替换为IPv4本地地址127.0.0.1,示例代码:

    const { Client } = require('pg');
    const client = new Client({
      host: '127.0.0.1',
      port: 5432,
      user: '你的数据库用户名',
      password: '你的数据库密码',
      database: '目标数据库名'
    });
    
  • 验证端口权限与进程状态
    用命令检查5432端口是否被PostgreSQL占用:

    lsof -i :5432
    

    如果无结果,先启动PostgreSQL服务;如果有结果,确认进程所属用户是否具备绑定该端口的权限。

  • 排查防火墙/安全软件限制
    暂时关闭本地防火墙或安全软件,测试是否能正常连接。若恢复正常,需添加规则允许Node.js程序访问5432端口。

  • 确认PostgreSQL用户访问权限
    检查pg_hba.conf配置文件,确保存在允许本地IPv6地址访问的规则,示例:

    host    目标数据库名     数据库用户名     ::1/128     scram-sha-256
    

    同时确保该用户拥有目标数据库的访问权限,可通过SQL语句授权:

    GRANT ALL PRIVILEGES ON DATABASE 目标数据库名 TO 数据库用户名;
    

    修改配置后重启PostgreSQL服务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 14:55:05