30

如何为同一主机/数据库/用户规则设置多种身份验证方法?我希望能够同时使用sudo -u postgres psql -U postgres(无需输入 PostgreSQL 密码)和psql -U postgres --password. pg_hba.conf 中类似以下内容:

local   all             postgres                        md5
local   all             postgres                        peer

我只能同时使用一种方法或另一种方法。

谢谢。

(我使用的是 PostgreSQL 9.1)。

4

1 回答 1

28

没有。任何给定配置仅支持一种身份验证方法。

如果 Pg 可以支持后备身份验证,我会喜欢它,如果身份检查失败,它允许 md5 身份验证。不过,它目前不支持此功能,我怀疑(我尚未验证)需要更改协议来支持它。

可以做的是将密码存储在系统用户的$HOME/.pgpass文件中。postgres将其设置为 0600 模式,使其只能由postgres用户和读取root,无论如何,他们都可以直接访问数据库文件和配置。这样你就可以轻松管理md5 身份验证。在某些系统上,您可能必须先为用户设置和创建主目录,postgres然后才能执行此操作。查看用户是否有 homedir,getent passwd postgres如果postgres有,它在哪里。

更新:用于阅读$HOME/.psqlrc- 这很有用,但.pgpass适用于密码存储)

于 2012-07-12T02:12:00.280 回答