如何为同一主机/数据库/用户规则设置多种身份验证方法?我希望能够使用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)。
答案 0 :(得分:23)
不。任何给定配置只支持一种auth方法。
如果Pg可以支持后备身份验证,我会喜欢它,如果身份检查失败,则允许使用md5身份验证。但是,目前它并不支持这一点,我怀疑(我还没有验证)需要更改协议才能支持它。
您可以做的是将密码存储在$HOME/.pgpass
系统用户的postgres
文件中。给它模式0600所以它只能由postgres
用户和root
读取,无论如何,他们都可以直接访问数据库文件和配置。这样你就可以轻松管理和 md5 auth。在某些系统上,您可能必须先为postgres
用户设置和创建主目录,然后才能执行此操作。请参阅getent passwd postgres
,了解postgres
用户是否拥有homedir,如果有,请查看该位置。
(更新:用于阅读$HOME/.psqlrc
- 这很有用,但.pgpass
适合密码存储)