使用sudo命令修改postgresql.conf后启动PostgreSQL服务器失败

时间:2012-03-14 15:26:51

标签: postgresql configuration-files root

我想更改postgresql.conf文件中的“shared_buffers”参数。

问题在于我使用了sudo命令并将所有权赋予根目录。

-rw-rw-rw-   1 root root  13661 Mar 14 15:36 postgresql.conf

然后我使用以下命令将所有权归还给postmaster:

sudo chown postgres:postgres /var/lib/pgsql/data/postgresql.conf

所以我尝试了命令:

postgres -D /var/lib/pgsql/data

我仍然感到非常惊讶,仍然收到以下错误消息

postgres cannot access the server configuration file "/var/lib/pgsql/data/postgresql.conf": Permission denied

下面的id是postgreSQL目录中“ls”命令的结果:

sudo ls -l /var/lib/pgsql/data/
total 208
drwx------  19 postgres postgres   4096 Mar 13 17:23 base
drwx------   2 postgres postgres   4096 Mar 14 14:30 global
drwx------   2 postgres postgres   4096 Mar  5 14:26 pg_clog
-rw-------   1 postgres postgres   3365 Mar  1  2006 pg_hba.conf
-rw-------   1 postgres postgres   3182 Mar  1  2006 pg_hba.conf.old
-rw-------   1 postgres postgres   1460 Feb 24  2006 pg_ident.conf
drwx------   2 postgres postgres 139264 Mar 14 00:00 pg_log
drwx------   4 postgres postgres   4096 Feb 24  2006 pg_multixact
drwx------   2 postgres postgres   4096 Mar 14 10:42 pg_subtrans
drwx------   2 postgres postgres   4096 Feb 24  2006 pg_tblspc
drwx------   2 postgres postgres   4096 Feb 24  2006 pg_twophase
-rw-------   1 postgres postgres      4 Feb 24  2006 PG_VERSION
drwx------   3 postgres postgres   4096 Mar 14 14:30 pg_xlog
-rw-rw-rw-   1 postgres postgres  13661 Mar 14 15:36 postgresql.conf
-rw-------   1 postgres postgres     49 Jan  2 17:15 postmaster.opts

如果有人知道可能是解决此问题的方法。

提前致谢。

佛瑞德

2 个答案:

答案 0 :(得分:8)

检查SELinux如何运行:

# sestatus

如果处于强制模式,请检查日志:

# less /var/log/audit/audit.log

如果你发现SELinux阻塞,那么暂时禁用SELinux只是为了确认它是罪魁祸首:

# setenforce 0

现在尝试启动服务器。如果它工作,然后重新启用SELinux:

# setenforce 1

搜索如何恢复该文件的SELinux设置。

答案 1 :(得分:1)

在全新安装后我发现了同样的错误 首先,/var/lib/pgsql/data/中所有文件的默认文件模式位设置为600,而您postgresql.conf的默认文件模式位设置为666。这不是案件中的问题,但保持现状是很好的 我不熟悉RedHat发行版,但从评论中看来这对SELinux来说不是问题 在我的Fedora 20上运行:

$ systemctl start postgresql.service

似乎运行服务器。

如果你想第一次在PosgtreSQL中执行一些命令 - 比如为ex创建自己的用户。您可能会发现此问题很有用:https://serverfault.com/questions/110154/whats-the-default-superuser-username-password-for-postgres-after-a-new-install