【发布时间】:2012-08-14 10:03:21
【问题描述】:
在 Ubuntu 12.04 上安装 PostgreSQL 9.1 后,我为“postgres”超级用户帐户设置了密码。我希望所有用户在登录时都必须输入密码。这就是我这样配置 pg_hba.conf 的原因:
#Database administrative login by Unix domain socket
local all postgres md5
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
进行这些更改后,我重新启动了 postgresql。当我这样做psql -U testuser 时,我会被要求输入密码,但是当我使用“postgres”帐户登录时,就像psql -U postgres 那样,我没有收到密码提示并已登录。
如果我使用psql -U postgres -W 强制提示密码,我可以通过输入正确的密码或不输入任何内容来登录。输入错误的密码会被拒绝。
谁能解释一下为什么会这样?
在相关说明中:我看到很多例子,人们使用 ident 作为“postgres”用户的身份验证方法,认为要成为“postgres”用户需要机器的 root 密码。我假设原因是,如果攻击者获得了 root 访问权限,那么无论如何你都完成了。不过,我更喜欢使用密码登录,该密码与 root 密码不同。我更喜欢为不同的事情使用不同的密码。这合理吗?
grep '^[^#]' pg_hba.conf的输出
local all postgres md5
local all all md5
host all all 127.0.0.1/32 md5
【问题讨论】:
标签: database postgresql authentication postgresql-9.1