pgsql 可以連接,pgadmin 不能

pgsql 可以連接,pgadmin 不能

我們只需要 1 個角色擁有 1 個資料庫、Domain-unix Socket、無密碼

postgres@luciol-essai:~$ more /etc/postgresql/8.4/main/pg_hba.conf | grep jppstphp
local   essais_php  jppstphp                       trust
postgres@luciol-essai:~$ 

psql 成功:

envol@luciol-essai:~$ psql -U jppstphp essais_php
psql (8.4.15)
essais_php=> 

pgadmin3 失敗:

這就是錯誤。

Error connecting to the server: FATAL:  authentification Ident ?chou?e pour l'utilisateur << jppstphp >>

答案1

看起來 PgAdmin-III 被告知要連接到localhost127.0.0.1,因此它使用 TCP/IP,而 psql 沒有被指定主機規範,因此它使用 UNIX 套接字 ( local)。

將 pgadmin3 中的主機名字段留空,或pg_hba.confhost essais_php jppstphp 127.0.0.1/32 trust.

答案2

您應該檢查整個pg_hba.conf文件,指令的順序很重要。我猜你保留了預設行:

local   all         all                               ident

如果此行出現在您的特定行 about 之前jppstphp,postgresql 伺服器將首先嘗試根據您的 UNIX 使用者名稱(似乎是 )來識別您envol。這將會失敗,因為您嘗試以 postgres user/role 身分進行連線jppstphp

如果我的假設是正確的,請刪除上面的行(可能還有帶有md5密碼身份驗證的類似條目)或將您的jppstphp行放在它之前應該允許您透過本機套接字進行連接。

要透過本機套接字進行連接,只需將主機欄位留空,就像您所做的那樣。

答案3

透過命令列連接 psql 時遇到相同的問題,且 pgAdmin 未在 RDS 上與 AWS 連線。我確實將 RDS 設定為可公開存取。我確保我的 ACL 和安全性群組完全開放並且仍然存在問題,因此我執行了以下操作: sudo find . -name *.conf 然後sudo nano ./data/pg_hba.conf 添加到 pg_hba.conf 檔案中的命令頂部host all all 0.0.0.0/0 md5 ,pgAdmin 自動讓我登入。

附帶說明一下,我的 RDS 位於我的預設 VPC 中。我的非預設 VPC 中有一個相同的 RDS 實例,其安全性群組、ACL 和安全性群組設定與我的預設 VPC 相同,但我無法讓它工作。不知道為什麼,但是,那是另一天的事了。

相關內容