我想让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
除了第一个示例中的本地条目。这行得通,但我也想在这里使用本地套接字-为了提高性能,并且由于直觉,这似乎是正确的选择。
这可能吗?有什么更好的解决方法吗?