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


14

我想让PostgreSQL(超级)用户使用“对等”或“ 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用户名,密码和db名称由访问者)。现在,我也想让harold用户也通过Web界面登录。由于harold的“对等”设置,此操作失败。

当前的解决方法是让Web界面使用

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

除了第一个示例中的本地条目。这行得通,但我也想在这里使用本地套接字-为了提高性能,并且由于直觉,这似乎是正确的选择。

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

Answers:


10

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

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


如果cronjob来自其主目录中具有.pgpass的同一用户,则它将起作用。
Andrei Mikhaltsov
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.