2015-03-02 20 views
2

即使密碼錯誤,我也可以連接到本地Postgres數據庫。這是我如何創建一個角色和數據庫(我在Mac OSX上在Postgres 9.3):即使使用錯誤的密碼,我也可以在Rails上訪問postgres數據庫

psql postgres 

CREATE ROLE role_name WITH ENCRYPTED PASSWORD 'role_password' NOSUPERUSER NOCREATEROLE NOCREATEDB LOGIN; 

CREATE DATABASE db_name OWNER role_name; 

\q 

所以,當我配置on Rails的我database.yml文件,使用以下:

default: &default 
    adapter: postgresql 
    encoding: unicode 
    pool: 5 

development: 
    <<: *default 
    database: db_name 
    username: role_name 
    password: this_is_a_wrong_password_ha_ha 

並啓動服務器(rails s),一切工作正常:我可以創建具有遷移表和創建/讀取/更新/刪除其中的數據表。

我甚至可以做到這一點,而無需提供任何角色和/或密碼。

如果角色名稱和角色密碼不正確,我該如何阻止對數據庫的訪問?我錯在哪裏?謝謝

回答

1

似乎是這樣的默認設置爲您的/usr/local/var/postgres/pg_hba.conf。它允許訪問數據庫的任何本地連接:

# TYPE DATABASE  USER   ADDRESS     METHOD 

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

是的@maxd,你是對的。我的pg_hba.conf與你的答案相同。我怎樣才能防止這一點? (我的意思是特定數據庫只有特定用戶) – htaidirt 2015-03-02 16:23:14

+0

只需[調整此配置](http://www.postgresql.org/docs/9.4/static/auth-pg-hba-conf.html)並重新啓動Postgres。 – 2015-03-02 16:25:15

+0

重新加載是足夠好的,您不必爲這種類型的更改重新啓動數據庫。 – 2015-03-02 17:18:05

相關問題