2014-02-25 75 views
0

我爲我的Rails應用程序使用PostgreSQL。通過的pgAdmin和控制檯的認證PostgreSQL服務器是成功的,但是當我運行Rails應用程序,我得到以下錯誤:PostgreSQL用戶認證錯誤

FATAL: Peer authentication failed for user "postgres" 

database.yml

development: 
    adapter: postgresql 
    encoding: unicode 
    database: app_dating 
    pool: 5 
    timeout: 5000 
    username: postgres 
    password: '123456' 

pg_hba.conf

# "local" is for Unix domain socket connections only 
local all    all          md5 
# IPv4 local connections: 
host all    all    127.0.0.1/32   md5 
# IPv6 local connections: 
host all    all    ::1/128     md5 

我使用Rails 4.0.1和PotgreSQL 9.1。

+0

http://stackoverflow.com/questions/2942485/psql-fatal-ident-authentication-failed-for-user-postgres – Santhosh

回答

2

您發佈的pg_hba.conf似乎不完整。你可能有(頂端可能多一點)與此類似在它的另一個入口:

# Database administrative login by Unix domain socket 
local all    postgres        peer 

Postgres的documentation for the pg_hba.conf狀態關於對等身份驗證:

peer
Obtain the client's operating system user name from the operating system and check if it matches the requested database user name. This is only available for local connections. See Section 19.3.7 for details.

因此,你必須確保,您使用本配置的本地unix套接字(不是TCP連接)。另外,你需要在你的Postgres數據庫中有一個postgres用戶。

另一種方法是將該行從pg_hba.conf中刪除,以回退到所定義的其他機制。確保你的postgres用戶有一個有效的密碼設置。

請注意,有一個名爲postgres的預定義超級用戶很常見,該用戶具有所有權限而沒有任何權限檢查。將該用戶用於應用程序是不明智的(例如,您的Rails應用程序)。相反,在您的Postgres數據庫中創建一個新的用戶,並將其用於您的應用。