2013-01-23 69 views
4

我是PostreSQL的新手。我花了整整一個早上試圖讓用戶登錄正常工作,現在我非常沮喪!PostgreSQL - 添加組角色後密碼驗證失敗

所以,我有一個PostGIS數據庫,版本9.2,作爲OpenGeo軟件套件的一部分。我可以使用postgres用戶訪問數據庫,但想要讓組角色和用戶有權訪問數據庫,以便它可以在該數據庫中創建表和更新/選擇/刪除等。

我可以創建一個用戶,該工作,我可以登錄該用戶。我可以創建組角色併爲角色分配權限。然後,我可以將用戶添加到組角色,然後可以不再需要登錄!

它甚至得到了這樣,當我將用戶postgres添加到組,該用戶無法登錄。我刪除了該組,但無法登錄仍然存在。

現在,我已經玩了很多pg_hba.conf。我現在可以登錄爲postgres,但只有在啓用「信任」後,我才能使用任何軟件登錄,例如PGAdminIII。

很高興能得到一些關於出現問題的建議,並再次啓用已驗證的登錄。

pg_hba:

Code: 
# Database administrative login by Unix domain socket 
local all    postgres        trust 
local all gisadmin trust 

# TYPE DATABASE  USER   ADDRESS     METHOD 
local all   opengeo       md5 
local all   opengeo       md5 

# "local" is for Unix domain socket connections only 
local all    all          md5 
# IPv4 local connections: 
host all    all    127.0.0.1/32   md5 
host all gisadmin localhost trust 


# IPv6 local connections: 
host all    all    ::1/128     md5 
# Allow replication connections from localhost, by a user with the 
# replication privilege. 
#local replication  postgres        peer 
#host replication  postgres  127.0.0.1/32   md5 
#host replication  postgres  ::1/128     md5 

正如最後一點,我想可以通過SSH隧道來登錄。我最初可以使用'postgres'用戶來做到這一點,但現在我添加並從一個組中刪除該用戶,我不能。

編輯:錯誤信息......

如果我通過SSH隧道登錄在pgAdmin的與正確的密碼,我得到的錯誤「FATAL:失敗的用戶密碼驗證......」

如果我嘗試通過PGAdmin中的SSH隧道進行登錄,而沒有設置密碼,而設置了trust選項,則會顯示錯誤:「連接到服務器的錯誤:fe_sendauth:沒有提供密碼」。

第一次失誤本地登錄時,只需通過SSH和psql仍然發生,但第二個消失了,我可以登錄的

輸出\杜+: 的enter image description here

輸出\ DG + enter image description here

+0

請給出錯誤信息,說如果你試圖連接本地或遠程 –

+0

我添加了錯誤消息。如果「信任」不在那裏,則本地和遠程的「密碼驗證失敗」。如果信任,它仍然遠程失敗。 最終我想遠程連接。我可以在本地連接,但是密碼驗證也在那裏被破壞... –

+0

您可以顯示您在安裝過程中運行的實際命令嗎? 'psql'中'\ du +'和'\ dg +'的輸出? –

回答

6

我認爲這種行爲可能與pgAdminIII有關,因爲我有類似的問題,並且似乎每次我使用pgAIII連接到我的db作爲postgres並查看用戶屬性中的定義選項卡時, 「過期日期」被檢查並且1/1/1970或31/12/1969被設置爲過期日期。 Daniel提出的解決方案的工作原理很明顯,問題在於密碼到期。

看來,這個錯誤在pgAdmin的1.16.2糾正,你可以在更改看到:

http://www.pgadmin.org/development/changelog.php

乾杯

2

\du+輸出時,密碼有效期至1970-01-01 00:00:00 + 00 ...看起來很可疑。嚴格地說,gisadmin,postgisrwpostgres的密碼不再有效,因此可以解釋爲什麼這些帳戶的基於密碼的身份驗證方法失敗。

您可以嘗試ALTER USER username valid until 'infinity'這些帳戶,看看是否解決了這個問題。

此外,當通過SSH隧道連接到PG時,請注意,以host開頭的pg_hba.conf條目將被忽略。這些條目僅用於連接到Unix域套接字。有時用戶會將其與localhost與其自身的連接混淆。

+0

1970年是默認條目,意思是「密碼不會過期」,我想。 –

+0

@alexgleith:我認爲這是默認條目,如果當我創建一個用戶它會有這個。但事實並非如此。 –

+0

我覺得這個固定了!不知何故,這些組織將密碼輸入有效期至... –