Postgresql

無法在 postgresql 9.5 中執行 psql

  • April 15, 2021

我在 Ubuntu 16.04 LTS 上使用 Postgresql 9.5。我輸入時收到以下錯誤psql

psql: could not connect to server: No such file or directory
  Is the server running locally and accepting
  connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

在檢查登錄時/var/log/postgresql/postgresql-9.5-main.log,我看到錯誤為:

2018-11-26 13:17:41 IST

$$ 3508-1 $$致命:無法訪問私鑰文件“/etc/ssl/private/ssl-cert-snakeoil.key”:權限被拒絕

以下是etc/ssl/privatessl-cert-snakeoil.key文件的權限:

vivek@vivek-ThinkPad-E480:~$ ls -l /etc/ssl
total 36
drwxr-xr-x 2 root root     20480 Nov 22 13:06 certs
-rwxr-xr-x 1 root root     10835 Dec  8  2017 openssl.cnf
drwxr--r-- 2 root ssl-cert  4096 Nov 22 13:06 private

vivek@vivek-ThinkPad-E480:~$ sudo ls -l /etc/ssl/private
total 4
-rw-r----- 1 root ssl-cert 1704 Nov 22 13:06 ssl-cert-snakeoil.key

任何人都可以指導我設置權限的正確方向嗎?

更新 #1postgres使用者也被添加到組ssl-cert中。

vivek@vivek-ThinkPad-E480:~$ getent group ssl-cert
ssl-cert:x:112:postgres

**更新 #2:**我發現server.key./var/lib/postgresql/9.5/main

“/etc/ssl/private”的權限應該是“drwx—x—”(又名“0710”),這應該是它附帶的權限。不知道改了 您可以使用以下方法恢復它:

sudo chmod 0710 /etc/ssl/private/

儘管也許還有一種方法可以與您的包管理器一起完成。

您不需要“/var/lib/postgresql/9.5/main”中的 server.key 文件,因為 postgresql 被配置為在“/etc/ssl/private/ssl-cert-snakeoil.key”中查找它. 您可以製作或獲取自己的證書並放入“/var/lib/postgresql/9.5/main”,但隨後您必須更改配置以在那裡查找它。

  1. 查看詳細日誌並將權限更改為 0600。它適用於我

詳細資訊:如果由數據庫使用者擁有,文件必須具有 u=rw (0600) 或更少的權限,如果由 root 擁有,則文件必須具有 u=rw,g=r (0640) 或更少的權限。

引用自:https://dba.stackexchange.com/questions/223413