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

Ubuntu 22.04中Postgres本地运行却拒绝连接的解决求助

解决Ubuntu 22.04下Postgres监听localhost的连接问题

1. 调整Postgres监听配置(postgresql.conf)

Postgres默认可能仅监听本地套接字,需确保它同时监听localhost的TCP/IP连接:

  • 打开对应版本的配置文件(替换<version>为你的Postgres版本,比如14):
    sudo nano /etc/postgresql/<version>/main/postgresql.conf
  • 找到listen_addresses参数,修改为:
    listen_addresses = 'localhost'
  • 保存退出后重启服务:sudo systemctl restart postgresql

2. 确认本地连接权限(pg_hba.conf)

该文件控制客户端连接权限,需确保本地连接被允许:

  • 打开配置文件:sudo nano /etc/postgresql/<version>/main/pg_hba.conf
  • 检查是否存在以下规则(无则添加):
    # 本地套接字连接
    local   all             all                                     peer
    # localhost的TCP/IP连接
    host    all             all             127.0.0.1/32            scram-sha-256
    host    all             all             ::1/128                 scram-sha-256
    
    注:peer认证适用于本地系统用户与Postgres用户同名的场景,scram-sha-256是Postgres 10+的安全认证方式
  • 保存后重载服务:sudo systemctl reload postgresql

3. 修复Postgres套接字目录权限

套接字连接失败常因目录权限异常:

  • 套接字默认路径为/var/run/postgresql/,检查权限:ls -ld /var/run/postgresql/
  • 确保目录所有者为postgres,权限至少为drwxrwsr-x(775)
  • 权限异常时修复:sudo chown postgres:postgres /var/run/postgresql/ && sudo chmod 775 /var/run/postgresql/
  • 重启服务:sudo systemctl restart postgresql

4. 终端验证连接,排查pgAdmin参数

先通过终端确认Postgres本身正常:

  • 本地套接字连接测试:sudo -u postgres psql,能进入psql则套接字正常
  • TCP连接测试:psql -h localhost -U postgres,成功则TCP监听正常
  • 若终端连接正常但pgAdmin报错,检查pgAdmin连接参数:
    • 连接类型选PostgreSQL
    • 主机名/地址填localhost
    • 端口保持默认5432(若修改过需对应)
    • 用户名填目标数据库用户(比如postgres)
    • 密码需提前设置:sudo -u postgres psql -c "ALTER USER postgres PASSWORD '你的密码';"

5. 检查服务状态与日志

确认服务运行状态:sudo systemctl status postgresql,输出需显示active (running)

  • 若服务异常,查看日志定位问题:sudo tail -n 20 /var/log/postgresql/postgresql-<version>-main.log

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 11:01:57