我想更改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
如果有人知道可能是解决此问题的方法。
提前致谢。
佛瑞德
答案 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