如何为同一主机/数据库/用户规则设置多种身份验证方法?我希望能够使用 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)。
最佳答案
没有。任何给定配置仅支持一种身份验证方法。
如果 Pg 可以支持回退身份验证,我会很高兴,如果身份检查失败,它会允许 md5 身份验证。不过,它目前不支持此功能,而且我怀疑(我尚未验证)需要更改协议(protocol)才能支持它。
您可以做的是将密码存储在$HOME/.pgpass
文件中,供postgres
系统用户使用。给它模式 0600,这样它只能被 postgres
用户和 root
读取,无论如何他们都可以直接访问数据库文件和配置。这样您就可以轻松获得管理和 md5 身份验证。在某些系统上,您可能必须先为 postgres
用户设置和创建主目录,然后才能执行此操作。查看 getent passwd postgres
查看 postgres
用户是否有 homedir,如果有,它在哪里。
(更新:用于读取$HOME/.psqlrc
- 这很有用,但.pgpass
适用于密码存储)
关于PostgreSQL 多种认证方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11442915/