
我們只需要 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 被告知要連接到localhost
或127.0.0.1
,因此它使用 TCP/IP,而 psql 沒有被指定主機規範,因此它使用 UNIX 套接字 ( local
)。
將 pgadmin3 中的主機名字段留空,或pg_hba.conf
為host 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 相同,但我無法讓它工作。不知道為什麼,但是,那是另一天的事了。