在 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