
在 my 中安裝postgres-9.3
via後,其預設配置將套接字放在目錄中。我已經(也透過安裝)預設由啟用選項管理。這意味著運行在其上的任何 Web 應用程式都無法訪問,因此無法連接到.我已經更改了 postgres 配置,因此它應該像在.yum
CentOS 7
/tmp
httpd
yum
system.d
PrivateTmp
httpd
/tmp
postgres
/var/run/postgres
Ubuntu
現在的問題是,postgres
沒有足夠的權限來寫入/var/run
.我的第一個想法是:
chown postgres:postgres /var/run/postgres
但/var/run
重啟後目錄會被清理,所以這不起作用。我的問題是:
如何以持續重新啟動的方式授予使用者/var/run/postgres
存取權限?postgres
我不想更改套接字位置,也不想更改httpd
的system.d
配置。我只是希望postgres
能夠寫信給/var/run/postgres
.任何幫助深表感謝。
答案1
您確定該套接字僅適用/tmp
於 CentOS 7 嗎?
Fedora 的最新版本有兩份套接字副本,一份為現代系統上的首選版本/run/postgresql
(這是/var/run/postgresql
連結解析後真正位於的位置),一份/tmp
為希望在那裡找到它的舊客戶端提供。
無論如何,如果您確實需要確保在啟動時創建目錄,請使用一個tmpfiles.d
文件,例如/usr/lib/tmpfiles.d/postgresql.conf
Fedora 中附帶的文件,其中包含:
d /var/run/postgresql 0755 postgres postgres -
答案2
目錄是/var/run
CentOS 7 中的符號連結。它是一個臨時目錄,在啟動時創建。/run
/run/postgresql
隨著 systemd 的出現,一種新的機制稱為systemd-tmp 文件已被引入來管理暫存檔案和目錄。
Systemd-tmpfiles 在啟動期間建立臨時目錄並設定其擁有者、群組和權限。 CentOS 7 在/usr/lib/tmpfiles.d/postgresql-96.conf
.預設情況下,該檔案包含以下行:
d /run/postgresql 0755 postgres postgres -
您可以透過編輯該行來變更權限、擁有者和群組。但是,進行此類更改的建議方法不是直接編輯 下的文件/usr/lib/tmpfiles.d/
,而是將設定檔複製到/etc/tmpfiles.d/
,並在該副本中進行必要的更改。
答案3
只需將所需的命令放入 /etc/rc.local 檔案中,它們就會在每次啟動過程結束時執行。