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

PostgreSQL 14连接被拒绝问题求助(Ubuntu 20.04+Node.js)

PostgreSQL 14连接拒绝问题排查与解决(Ubuntu 20.04)

核心问题定位

从报错信息来看,无论是本地psql连接还是Node.js程序连接,本质都是PostgreSQL服务未正常运行,或未监听指定的socket/端口。以下是分步排查修复方案:

1. 修正pg_hba.conf语法错误(关键)

你提供的pg_hba.conf最后一行存在无效语法:

hostssl all             all             0.0.0.0/0               scram-sha-256 c>

末尾的c>属于冗余错误字符,会导致PostgreSQL服务启动失败。修正后该行应为:

hostssl all             all             0.0.0.0/0               scram-sha-256

2. 检查并启动PostgreSQL服务

  • 查看服务运行状态:
    systemctl status postgresql
    
  • 若服务未运行,启动服务:
    sudo systemctl start postgresql
    
  • 设置开机自启(可选):
    sudo systemctl enable postgresql
    

3. 验证服务监听配置

编辑PostgreSQL主配置文件(路径通常为/etc/postgresql/14/main/postgresql.conf):

  • 确保listen_addresses包含localhost(允许本地TCP连接):
    listen_addresses = 'localhost'  # 或设为'*'允许所有IP连接
    
  • 确认端口配置为默认的5432:
    port = 5432
    

修改后重启服务生效:

sudo systemctl restart postgresql

4. 修复本地Socket文件问题

如果psql仍提示socket不存在,检查Unix socket目录配置:

  • 在postgresql.conf中确认unix_socket_directories路径:
    unix_socket_directories = '/var/run/postgresql'
    
  • 检查目录权限,确保postgres用户拥有读写权限:
    ls -ld /var/run/postgresql
    
    正常权限应为drwxrwsr-x,所属用户/组为postgres:postgres。若权限异常,执行:
    sudo chown postgres:postgres /var/run/postgresql
    sudo chmod 775 /var/run/postgresql
    

5. 修正psql命令拼写错误

你之前执行的命令存在拼写错误,正确命令应为:

sudo -u postgres psql postgres

(原命令中sql应为psql,且Ubuntu下默认PostgreSQL管理员用户名为小写postgres)

6. 验证Node.js连接

完成以上修复后,重启Node.js服务再次尝试连接。若仍有问题,可临时将pg_hba.conf中本地TCP连接的认证方式改为trust排查(生产环境需改回scram-sha-256):

host    all             all             127.0.0.1/32            trust

修改后重启PostgreSQL服务再测试。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 11:10:14