PostgreSQL连接被拒绝求助:端口5432未监听,集群启动失败
解决Ubuntu 20.04上PostgreSQL启动失败(端口未监听、PATH不安全、PID文件错误)问题
核心问题梳理
Ubuntu 20.04.03中安装PostgreSQL 9.3/14/15/16版本均出现启动异常:
psql连接localhost:5432被拒绝,Unix套接字提示文件不存在netstat显示5432端口未监听pg_lsclusters显示集群状态为down,日志无内容- systemd提示
postgresql@9.3-main.service启动失败,原因包括$ENV{PATH}存在不安全目录、无法打开PID文件 - 卸载重装后问题依旧
分步解决步骤
1. 修复PATH环境变量的不安全目录
$ENV{PATH}存在全局可写目录是systemd阻止服务启动的常见原因:
- 执行
echo $PATH列出当前PATH中的所有目录 - 检查每个目录的权限:
ls -ld /path/to/dir,若权限为777则属于不安全目录 - 修改不安全目录权限为
755(仅所有者可写):sudo chmod 755 /path/to/unsafe/dir - 若目录非必要,可编辑
~/.bashrc或/etc/profile移除对应PATH配置,执行source ~/.bashrc生效
2. 彻底清理PostgreSQL残留文件
卸载不彻底会导致重装后配置冲突:
- 停止所有PostgreSQL相关服务:
sudo systemctl stop postgresql@*.service - 彻底卸载所有相关包:
sudo apt purge postgresql* postgresql-common postgresql-client-common - 删除残留的配置、数据、日志目录:
sudo rm -rf /var/lib/postgresql/ /etc/postgresql/ /var/log/postgresql/ - 清理无用依赖:
sudo apt autoremove && sudo apt autoclean
3. 重新安装稳定版本(推荐14或16 LTS)
避免安装过旧版本(如9.3),Ubuntu 20.04对其支持有限:
- 添加官方源(若未添加):
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - - 更新源并安装指定版本:
sudo apt update sudo apt install postgresql-14
4. 修复集群权限与PID文件问题
权限错误会导致无法创建PID文件:
- 检查数据目录权限,确保归属postgres用户组:
sudo chown -R postgres:postgres /var/lib/postgresql/14/main/ - 确保PID文件目录存在且权限正确:
sudo mkdir -p /var/run/postgresql/ sudo chown postgres:postgres /var/run/postgresql/ - 启动服务并检查状态:
sudo systemctl start postgresql@14-main.service sudo systemctl status postgresql@14-main.service
5. 验证连接
- 切换到postgres用户:
sudo su - postgres - 执行
psql测试本地连接 - 检查端口监听:
netstat -tulpn | grep 5432,应显示postgres进程监听5432端口
内容的提问来源于stack exchange,提问作者Abol
相关产品推荐
相关产品推荐

