我想让一个PostgreSQL(超级)用户使用“peer”或者“md5”authentication方法进行authentication,在这两种情况下最好使用本地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)并且是纯只读的。 他们每晚都被哈罗德超级用户抛弃和重新创build。 harold也是一个系统帐户,所以“peer”对于无密码的cronjobs等工作很好。然后有一个访问数据库的web界面:这使用md5authentication(系统用户是web服务器,pg用户名,密码和db名称是由访客)。 现在我想让harold用户通过web界面login。 这是因为harold的“同伴”设置而失败的。
目前的解决方法是让web界面通过TCP连接,使用
# TYPE DATABASE USER ADDRESS METHOD host all all 127.0.0.1/32 md5 host all all ::1/128 md5
除了第一个例子中的本地条目之外。 这是有效的,但我宁愿在这里使用本地套接字 – 为了性能,并因为直觉感觉这似乎是正确的事情。
这可能吗? 我们有没有更好的解决方法?
根据类似的StackOverflow问题 ,答案是否定的,您不能为同一types,数据库,用户和地址启用两种types的身份validation。
StackOverflow问题build议在用户的主目录中使用.pgpass文件并使用md5身份validation,但是我不确定这对cron作业是否有效。