我可以在 pg_hba.conf 中为同一个 PostgreSQL 本地用户同时启用对等和 md5 身份验证吗?

我可以在 pg_hba.conf 中为同一个 PostgreSQL 本地用户同时启用对等和 md5 身份验证吗?

我想让 PostgreSQL (超级)用户使用“peer”或“md5”身份验证方法进行身份验证,最好在两种情况下都使用本地 Unix 域套接字。问题是 pg_hba.conf 中条目的顺序很重要,并且将应用第一个匹配项。

我拥有的:

# TYPE    DATABASE   USER      ADDRESS   METHOD
  local   all        harold              peer
  local   all        all                 md5

我想要的(无效语法):

# TYPE    DATABASE   USER      ADDRESS   METHOD
  local   all        harold              peer-or-md5
  local   all        all                 md5

以下是有关我们希望在其中使用它的环境的更多详细信息:

在这个特定的服务器上,所有数据库都相对较小(每个数据库的数据量小于 10MB)并且是纯只读的。它们每晚都会由超级用户 harold 删除并重新创建。harold 也是一个系统帐户,因此“peer”非常适合无密码的 cronjobs 等。然后有一个 Web 界面可以访问数据库:它使用 md5 身份验证(系统用户是 Web 服务器,pg 用户名、密码和数据库名称由访问者提供)。现在我想让 harold 用户也通过 Web 界面登录。由于 harold 的“peer”设置,此操作失败。

当前的解决方法是让 Web 界面通过 TCP 连接,使用

# TYPE    DATABASE   USER      ADDRESS        METHOD
  host    all        all       127.0.0.1/32   md5
  host    all        all       ::1/128        md5

除了第一个示例中的本地条目之外。这有效,但我宁愿在这里也使用本地套接字 - 出于性能考虑,并且直觉认为这似乎是正确的做法。

这可能吗?有没有更好的解决方法?

答案1

根据类似的 StackOverflow 问题,答案是否定的,您不能对同一种类型、数据库、用户和地址启用两种类型的身份验证。

StackOverflow 问题建议使用.pgpass用户主目录中的文件并使用 md5 身份验证,但我不确定这是否一定适用于 cron 作业。

相关内容