2010-12-01 46 views
27

我有一個新鮮的Ubuntu 10.10安裝所有更新和PostgreSQL 8.4
爲了對PostgreSQL接受登錄+密碼連接,我已經通過其配置:如何配置postgresql,以便它接受登錄名+密碼驗證?

sudo su postgres 
psql 
ALTER USER postgres WITH PASSWORD 'password'; 
CREATE DATABASE myapp; 
\q 
exit 
sudo vi /etc/postgresql/8.4/main/pg_hba.conf 
change "local all all indent" to "local all all trust" 

但是,出人意料的是,這是行不通的!該命令

psql -U postgres password 

錯誤評估板:

psql: FATAL: Ident authentication failed for user "postgres" 

任何提示我怎麼可以讓psql -U工作?

回答

35

將「postgres」用戶標識爲ident可能是一個好主意。默認情況下,我相信Ubuntu使用「postgres」用戶來執行升級,備份等,並且要求它能夠在沒有指定密碼的情況下登錄。

我建議創建另一個用戶(可能使用您自己的用戶名)並授予管理員權限。然後,您可以在本地連接上使用該用戶的密碼。

這裏是我的pg_hba.conf的相關部分看起來像:

# allow postgres user to use "ident" authentication on Unix sockets 
# (as per recent comments, omit "sameuser" if on postgres 8.4 or later) 
local all postgres       ident sameuser 
# allow all other users to use "md5" authentication on Unix sockets 
local all all        md5 
# for users connected via local IPv4 or IPv6 connections, always require md5 
host all all  127.0.0.1/32   md5 
host all all  ::1/128    md5 

另外請注意,你想要什麼psql -U postgres password不會做。永遠不要在命令行中指定密碼。這將嘗試以用戶「postgres」登錄到名爲「password」的數據庫。

您應該改用psql -U postgres myapp。如果Postgres配置正確,需要密碼,Postgres會自動提示您輸入密碼。

+0

用管理員權限添加新用戶的正確方法是什麼? – grigoryvp 2010-12-01 20:38:05

+0

通過「CREATE USER puser WITH PASSWORD'password'」並執行「psql -U puser」評估錯誤「psql:FATAL:database」puser「不存在」 – grigoryvp 2010-12-01 20:41:53

2

我認爲你的pg_ident.conf文件配置錯誤。另外,你有沒有試過

psql -U postgres -W 
0

另一件可能導致這種情況的信息是過期憑證。我不認爲這發生在版本8中,但在版本9中,當您在pgadmin中創建新角色時,它創建爲過期狀態,您需要更改或清除角色的過期日期,然後才能夠使用它。