2017-07-14 114 views
0

我剛剛創建了一個新應用程序並安裝了'pg'gem,創建了一個psql用戶和數據庫,並創建了一個database.yml文件。但是,服務器不會接受我的密碼,即使它是正確的。Postgresql將不接受密碼

下面是我跑到我創建用戶和數據庫的命令:

Project$ sudo -i -u postgres 
[email protected]:~$ psql 
postgres=# CREATE USER Project WITH PASSWORD 'Project' CREATEDB; 
postgres=# CREATE DATABASE Project OWNER Project; 

,所有經歷了沒有任何錯誤。然後,我創建了以下database.yml文件:

development: 
    adapter: postgresql 
    database: Project 
    username: Project 
    password: Project 
    host: localhost 
    pool: 5 
    timeout: 5000 

test: 
    adapter: postgresql 
    database: Project 
    username: Project 
    pool: 5 
    timeout: 5000 

production: 
    adapter: postgresql 
    database: Project 
    username: Project 
    pool: 5 
    timeout: 5000 

但是,當我開始我的Rails服務器,並嘗試加載一個網頁,我得到這個錯誤:

PG::ConnectionBad 
FATAL: password authentication failed for user "Project" FATAL: password authentication failed for user "Project" 

Extracted source (around line #56): 

#54 ### Convenience alias for PG::Connection.new. 
#55 def self::connect(*args) 
#56   return PG::Connection.new(*args) #line 56 
#57 end 

我已經嘗試了多種不同的密碼和用戶/數據庫名稱,我試圖讓用戶成爲超級用戶,但我總是得到相同的結果。我已經完成了所有這一切,它一直工作。這是怎麼回事??

+0

你可以試試小寫用戶名嗎?在PostgresSQL中使用大寫用戶名非常棘手。您沒有引用名稱,而是實際創建了用戶「項目」而不是「項目」。 –

+0

@TomaszMyrta Wooow,是的,就是這樣。謝謝。從來不會猜到案件會起作用。 –

+0

「pg_hba.conf」文件中爲該用戶分配的認證方法是什麼? – Nicarus

回答

1
postgres=# CREATE USER Project WITH PASSWORD 'Project' CREATEDB; 

此代碼創建用戶「項目」而不是「項目」。如果你真的想在用戶名中使用大寫字母,你必須雙引號他們:

postgres=# CREATE USER "Project" WITH PASSWORD 'Project' CREATEDB; 

這同樣與表和列名 - 無論是創建和查詢他們。

+0

這太瘋狂了,如果是那種挑剔的話,我會認爲他們會包括一些關於案件的事情。謝謝! –

+0

您可以在文檔中找到更多信息 - SQL語法/詞法結構/標識符和關鍵字。 –

0

嘗試從development:組中刪除host: localhost。過去我遇到過類似的問題,這爲我解決了問題。