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

Ubuntu 20.04重启后PostgreSQL 12无法自动启动问题求助

PostgreSQL 12 on Ubuntu 20.04 升级后无法自启排查修复方案

故障核心原因

该问题几乎都是升级过程中包管理器错误重置了PostgreSQL相关目录权限导致的,systemd服务启动时postgres用户无权限写入日志或PID文件,启动失败退出;手动切换postgres用户启动时,要么写入了用户有权限的临时路径,要么继承了当前用户的权限上下文所以可以正常运行。

排查修复步骤

  • 步骤1:修复日志目录权限
    执行命令检查目录归属:
    ls -ld /var/log/postgresql
    正常输出应为:

drwxrwxr-t 2 postgres postgres 4096 Nov 12 2021 /var/log/postgresql

如果所有者不是postgres:postgres,执行如下命令修复:

sudo chown -R postgres:postgres /var/log/postgresql
sudo chmod 750 /var/log/postgresql
sudo chown postgres:postgres /var/log/postgresql/postgresql-12-main.log
  • 步骤2:修复运行时目录权限
    PostgreSQL启动时需要向/run/postgresql写入PID文件,该目录是systemd管理的临时目录,重启后会重建,如果配置错误会导致权限异常:
    执行命令检查:
    ls -ld /run/postgresql
    正常输出应为:

drwxrwsr-x 2 postgres postgres 100 Nov 12 2021 /run/postgresql

如果归属或权限异常,先临时修复:

sudo chown postgres:postgres /run/postgresql
sudo chmod 2775 /run/postgresql

再检查systemd单元配置避免重启后再次失效:
执行systemctl cat postgresql@12-main.service,确认[Service]段存在如下配置:

User=postgres
Group=postgres
RuntimeDirectory=postgresql
RuntimeDirectoryMode=2775

如果缺少上述配置,执行sudo systemctl edit postgresql@12-main.service,将上述内容写入配置文件后保存,再执行sudo systemctl daemon-reload生效。

  • 步骤3:验证修复结果
    执行如下命令重启服务验证:
    sudo systemctl restart postgresql@12-main.service
    执行pg_lsclusters,确认12/main集群状态为online,执行systemctl status postgresql@12-main.service确认状态为active (running)即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:48:00