pg_ctl:無法開啟 PID 檔案「/var/lib/postgres/data/postmaster.pid」:權限被拒絕

pg_ctl:無法開啟 PID 檔案「/var/lib/postgres/data/postmaster.pid」:權限被拒絕

在 Arch Linux 上,執行 initdb 命令後,我收到以下訊息:

Success. You can now start the database using:
    pg_ctl -D /var/lib/postgres/data -l logfile start

作為 postgres 用戶,我嘗試使用上面的命令啟動並獲取錯誤:

FATAL: could not create lock file "/run/postgresql/.s.PGSQL.5432.lock" no such file or directory

我退出到 postgres 用戶並嘗試透過上面的命令啟動並獲得:

pg_ctl: could not open PID file "/var/lib/postgres/data/postmaster.pid" : Permission denied

我嘗試將上面的命令作為 sudo 運行:

sudo pg_ctl -D /var/lib/postgres/data -l logfile start

並得到:

pg_ctl: cannot run as root.

答案1

當手動啟動 postgres 時,即不使用打包的啟動腳本,您需要執行該腳本的操作:

  1. 建立對其他人/run/postgresql具有寫入權限postgres 和讀取權限的目錄。/run通常安裝在 RAM 磁碟上,因此它是空的是正常的。

  2. pg_ctl僅以使用者身分執行 postgressudo -u postgres如果sudo必須為此使用,請使用。

您提到的第一個錯誤由#1 解決,另外兩個錯誤由#2 解決。或者只需使用作業系統軟體包附帶的啟動腳本,它可以處理這些細節,因此您無需學習它們。

醫生在https://wiki.archlinux.org/index.php/PostgreSQL告訴:

最後,開始使能夠postgresql.service。

這意味著systemctl enable postgresql.service並且systemctl start postgresql.service相反pg_ctl [...options...] start

答案2

值得一提的是,我想補充一點,我剛剛在 Ubuntu 上使用 Postgresql 10 時遇到了一個密切相關的問題。事實上,could not open PID file “/var/lib/postgres/data/postmaster.pid”這就是我來到這裡的原因。我嘗試了在這裡和其他地方學到的東西,但都無濟於事,然後求助於古老的重啟。一切都很順利。那好吧。我不能說我學到了很多東西,或者它教了很多東西,除了記住嘗試重新啟動...

相關內容