Postgresql

更改了pgAdmin中postgres登錄的密碼,現在無法連接到伺服器

  • December 21, 2017

我試圖使用 pg_dump 編寫數據庫腳本,並在此過程中使用 pgAdmin 更改 postgres 使用者的密碼。我(現在)意識到更改密碼是個壞主意。但現在我無法回到伺服器來撤消它。Postgres 正在執行:

$ ps aux | grep postgr
postgres 18888  0.0  0.1 206480 13984 ?        S    16:39   0:00 /opt/PostgreSQL/9.3/bin/postgres -D /home/dev/postgres_data
postgres 18889  0.0  0.0  60060  1180 ?        Ss   16:39   0:00 postgres: logger process                                   
postgres 18891  0.0  0.0 206480  1376 ?        Ss   16:39   0:00 postgres: checkpointer process

但是當我從命令行連接時,我收到了一個我以前從未見過的錯誤:

$ 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/run/postgresql/不存在。當我搜尋該錯誤時,我只獲得了Mac OS X 的點擊率,但我使用的是 Ubuntu 12.04。我能得到的最接近的是:

$ psql -h localhost -U postgres
psql: FATAL:  password authentication failed for user "postgres"
password retrieved from file "/home/dev/.pgpass"

我已經嘗試添加密碼/home/dev/.pgpass(實際上我在這個系統上只使用了 4 個密碼),但沒有一個允許我訪問。我嘗試與 pgAdmin 連接,結果相同。我已經重新啟動伺服器,sudo /etc/init.d/postgresql-9.3 restart然後登錄,沒有幫助。

我不知道下一步該做什麼。

Postgres 9.3,Ubuntu 12。

我認為這裡有兩個不相關的問題:

  1. 無法在 Unix 域套接字上連接

這部分ps輸出:

/opt/PostgreSQL/9.3/bin/postgres -D /home/dev/postgres_data

表示您沒有執行為 Ubuntu 打包的 postgresql。Ubuntu 不會在裡面安裝它的二進製文件/opt(它甚至不會創建/opt),而且你的數據目錄/home/dev/postgres_data也是非標準的。

通常的嫌疑人是使用EntrepriseDB 安裝程序安裝的 postgres 伺服器。

/var/run/postgresql是 Ubuntu 的 postgres 的預設值unix_socket_directory,而不是 Entreprisedb 或任何其他的。psql對非 Ubuntu 使用 Ubuntu 附帶的命令行工具會導致您提到的此錯誤:

psql:無法連接到伺服器:沒有這樣

的文件或目錄伺服器是否在本地執行並接受 Unix 域套接字“/var/run/postgresql/.s.PGSQL.5432”上的連接?

這種不匹配在 Mac OS X 上很常見,因為它有很多不兼容的 PostgreSQL 安裝程序,而且 Apple 附帶了一個沒有為它們中的任何一個配置的客戶端 postgresql。

沒有擺脫 EntrepriseDB 的 postgres 並安裝 Ubuntu(未來的好主意,但對於這個問題來說有點過分了),您需要unix_socket_directory找到您postgresql.conf的./home/dev/postgres_data``ps

然後把它作為-h參數給psql,這將被嘗試而不是/var/run/postgresql. 根據手冊頁:

-h 主機名,--host=主機名
指定伺服器所在機器的主機名
跑步。如果值以斜杠開頭,則將其用作
Unix 域套接字的目錄。
  1. 錯誤的 postgres 密碼

如果您使用 pgAdmin 成功更改了 db 密碼但無法使用它,則可能是您遇到了已知的 pgAdmin 錯誤。

查看PostgreSQL 使用者更改密碼後無法連接到伺服器

應@Mark 的要求,我將把修復作為一個獨立的答案發布:

我確實設法通過編輯 pg_hba.conf 並使來自本地主機的所有連接受信任(然後通過 psql 而不是 pgadmin 編輯密碼)來重置密碼

考慮到這發生在 3 年前,這是我能做的最好的事情。

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