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

执行psql postgres命令连接PostgreSQL时出现Connection refused错误求助

PostgreSQL连接拒绝(Connection refused)问题排查与解决

1. 确认PostgreSQL服务状态

  • 检查服务是否运行:
    • systemd系统(Ubuntu 16.04+/CentOS 7+):systemctl status postgresql
    • SysVinit系统:service postgresql status
  • 未运行则启动服务:
    • systemd:sudo systemctl start postgresql
    • SysVinit:sudo service postgresql start
  • 可选:设置开机自启:sudo systemctl enable postgresql

2. 验证Unix套接字路径

错误提示套接字路径为/tmp/.s.PGSQL.5432,按以下步骤检查:

  • 查看路径是否存在:ls -l /tmp/.s.PGSQL.5432
  • 若不存在,打开PostgreSQL配置文件postgresql.conf,找到unix_socket_directories参数确认实际套接字目录:
    • 配置文件位置:Debian/Ubuntu通常在/var/lib/postgresql/<版本号>/main/postgresql.conf,RHEL/CentOS在/var/lib/pgsql/data/postgresql.conf
    • 修改后重启服务:sudo systemctl restart postgresql
  • 连接时指定正确路径:psql -h /var/run/postgresql postgres(替换为实际目录)

3. 检查监听与权限配置

  • 确认postgresql.conf中listen_addresses参数:
    • 本地连接可设为localhost,需远程连接则设为*或具体IP,修改后重启服务
  • 检查pg_hba.conf本地连接规则,确保存在类似配置:
    local   all             all                                     peer
    # 或使用密码验证
    local   all             all                                     md5
    
    修改后重载配置:sudo systemctl reload postgresql

4. 修复文件权限

  • 确保套接字目录权限正确:chmod 1777 /tmp(设置sticky bit)
  • 确认套接字文件所属用户为postgres:ls -l /tmp/.s.PGSQL.5432,若不是则调整:chown postgres:postgres /tmp/.s.PGSQL.5432

5. 排查端口占用情况

  • 检查5432端口是否被其他进程占用:sudo lsof -i :5432 或 sudo netstat -tulpn | grep 5432
  • 若被占用,停止占用进程,或修改postgresql.conf中的port参数更换端口,重启后用新端口连接:psql -p <新端口> postgres

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 11:13:14