Systemd无法在Red Hat EL7上启动Postgresql

Systemd无法在Red Hat EL7上启动Postgresql,postgresql,redhat,systemd,Postgresql,Redhat,Systemd,在Red Hat EL7上,我从标准存储库安装了Postgres,并以通常的方式初始化了数据库: # postgresql-setup initdb 但当我尝试以以下方式启动服务时: # systemctl start postgresql.service 我得到一个错误: Job for postgresql.service failed. See 'systemctl status postgresql.service' and 'journalctl -xn' for details.

在Red Hat EL7上,我从标准存储库安装了Postgres,并以通常的方式初始化了数据库:

# postgresql-setup initdb
但当我尝试以以下方式启动服务时:

# systemctl start postgresql.service
我得到一个错误:

Job for postgresql.service failed. See 'systemctl status postgresql.service' and 'journalctl -xn' for details.
journalctl-xn
给了我:

Oct 06 14:52:55 myserver systemd[1]: Starting PostgreSQL database server...
-- Subject: Unit postgresql.service has begun with start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit postgresql.service has begun starting up.
Oct 06 14:52:55 myserver systemd[29267]: Failed at step USER spawning /usr/bin/postgresql-check-db-dir: No such process
-- Subject: Process /usr/bin/postgresql-check-db-dir could not be executed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- The process /usr/bin/postgresql-check-db-dir could not be executed and failed.
-- 
-- The error number returned while executing this process is 3.

有人有什么想法吗?

对我来说,日志告诉您db路径不存在。您确定psql配置正确,数据库路径存在,并且您有权访问它吗 当systemd启动Postgres时,在尝试调用
postgresql check db dir
之前,它将变为Postgres用户,这是一个脚本,用于检查数据库目录是否已通过
postgresql setup initdb
初始化。似乎systemd无法更改为postgres用户提供的此目录

我的工作是创建一个新的本地用户(“pgsql”),并将/var/lib/pgsql和/var/run/postgresql的所有权更改为此新用户,然后创建一个名为
/etc/systemd/system/postgresql.service的定制systemd服务文件来覆盖默认文件。该文件的内容包括:

.include /usr/lib/systemd/system/postgresql.service

[Service]
User=pgsql
Group=postgres

这允许systemd启动和停止Postgres。

检查PostgreSQL日志,查看PostgreSQL是否报告了更多详细信息。没有Postgres日志,因为在调用pg_ctl之前发生了故障。