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-256peer认证适用于本地系统用户与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
相关产品推荐
相关产品推荐

