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



即使使用错误的密码,我也可以连接到本地Postgres数据库。以下是我如何创建一个角色和一个数据库(我在MacOSX上使用Postgres9.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),一切都很好:我可以通过迁移创建表,并在其中创建/读取/更新/删除数据

我甚至可以在不提供角色和/或密码的情况下做到这一点。

如果角色名称和角色密码不正确,如何阻止对数据库的访问?我哪里错了?感谢

这似乎是/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

最新更新