我想让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也是一个系统帐户,因此“peer”可以很好地用于无密码cronjobs等.然后有一个访问数据库的Web界面:这使用md5身份验证(系统用户是webserver,pg用户名,密码和db名称由访客).现在我想让harold用户通过Web界面登录.由于harold的“同伴”设置,这失败了. 目前的解决方法是让web接口通过TCP连接,使用
# TYPE DATABASE USER ADDRESS METHOD host all all 127.0.0.1/32 md5 host all all ::1/128 md5
除了第一个例子中的本地条目.这样可行,但我宁愿在这里使用本地套接字 – 因为性能和直觉,这似乎是正确的事情.
这可能吗?我们有更好的解决方法吗?
根据
similar StackOverflow question,答案是否定的,您不能为相同类型,数据库,用户和地址启用两种类型的身份验证.
StackOverflow问题建议在用户的主目录中使用.pgpass文件并使用md5身份验证,但我不确定它是否一定适用于cron作业.