2012-03-14 56 views
5

我想更改我的postgresql.conf文件中的「shared_buffers」參數。使用sudo命令修改postgresql.conf後啓動PostgreSQL服務器失敗

問題是我使用了sudo命令,它將所有權交給了根。

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

然後我用下面的命令來拿回所有權郵政局長:

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在realted到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 

如果有人有可能是解決這個問題的方式有想法。

在此先感謝。

弗雷德

回答

7

檢查是怎麼SELinux的運行:

# sestatus 

如果是在執行模式檢查日誌:

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

如果發現了SELinux阻止然後暫時禁用SELinux只是確認它是罪魁禍首:

# setenforce 0 

現在嘗試啓動服務器。如果它能正常工作,那麼重新啓用SELinux:

# setenforce 1 

搜索如何恢復該文件的SELinux設置。

+0

非常感謝您的時間。我得到了「bash:sestatus:找不到命令」。你有什麼建議嗎?因爲一天下午瀏覽網頁後,我開始瘋狂起來,毫無頭緒。 – 2012-03-14 16:11:32

+0

@Fred鑑於文件路徑,我認爲您使用的是RedHat派生的操作系統。什麼是操作系統? – 2012-03-14 16:14:37

+0

供參考:我在RedHat企業Linux WS版本4 – 2012-03-14 16:14:39

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