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/postgresqldrwxrwsr-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
相关产品推荐
相关产品推荐

