2016-02-02 93 views
1

我有一個數據庫,一個角色我通過設立PSQL像...psql -U someuser -W some_db不尊重密碼?

CREATE ROLE someuser WITH LOGIN PASSWORD 'S0m3u53r'; 
CREATE DATABASE some_db OWNER someuser; 

我注意到,我可以進入我想要的任何密碼,當我嘗試連接的用戶。以下是我輸入「fizzbuzz」作爲密碼的psql會話的輸出。 Psql只是讓我進來,從來不打擾檢查密碼。

$ psql -U someuser -W some_db 
Password for user someuser: 
psql (9.4.1) 
Type "help" for help. 

some_db=> select current_user; 
current_user 
-------------- 
someuser 
(1 row) 
some_db=> 

爲什麼psql不強制執行該用戶密碼?當我輸入錯誤的密碼時,我希望它以某種方式拒絕我,但psql似乎不在乎。我必須在這裏錯過一些東西。

回答

2

postgres用戶認證設置存儲在名爲pg_hba.conf的文件中。

您目前的設置允許任何人通過unix套接字在本地連接trusted,即在登錄時不需要密碼。只要用戶存在於數據庫中,它將被允許登錄。

對於本地連接,您可以將其更改爲md5password對於通過網絡的連接,password不夠安全,因爲它發送原始文本密碼。

找到你的pg_hba.conf文件。接近該文件的底部是一條線,倒像是:

# "local" is for Unix domain socket connections only 
local all    all          trust 

將其更改爲

# "local" is for Unix domain socket connections only 
local all    all          md5 

pg_hba.conf文件的位置取決於你是什麼系統。在Ubuntu上,該文件將在

/etc/postgresql/9.4/main/pg_hba.conf 

在OSX(通過自制安裝),該文件的路徑是

/usr/local/var/postgres/pg_hba.conf 

要了解更多有關認證Postgres裏,看到official documentation