即使密码错误,我也可以连接到我的本地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
),一切正常:我可以创建包含迁移的表,并在其中创建/读取/更新/删除数据。
我甚至可以在不给角色和/或密码的情况下这样做。
如果角色名称和角色密码不正确,如何阻止对数据库的访问?哪里我错了?感谢
答案 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