即使密码错误,我也可以在Rails上访问postgres数据库

时间:2015-03-02 16:08:43

标签: ruby-on-rails postgresql

即使密码错误,我也可以连接到我的本地Postgres数据库。以下是我创建角色和数据库的方式(我在Mac OSX上使用Postgres 9.3):

psql postgres

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

CREATE DATABASE db_name OWNER role_name;

\q

因此,当我在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 个答案:

答案 0 :(得分:1)

这似乎是/usr/local/var/postgres/pg_hba.conf的默认设置。允许访问任何本地连接的DB:

# 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