PostgreSQL多种身份验证方法

时间:2012-07-11 23:15:44

标签: postgresql authentication postgresql-9.1

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

local   all             postgres                        md5
local   all             postgres                        peer

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

感谢。

(我正在使用PostgreSQL 9.1)。

1 个答案:

答案 0 :(得分:23)

不。任何给定配置只支持一种auth方法。

如果Pg可以支持后备身份验证,我会喜欢它,如果身份检查失败,则允许使用md5身份验证。但是,目前它并不支持这一点,我怀疑(我还没有验证)需要更改协议才能支持它。

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

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