配置 – 我可以在pg_hba.conf中为同一个PostgreSQL本地用户启用peer和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也是一个系统帐户,因此“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作业.

相关文章

项目需要,有个数据需要导入,拿到手一开始以为是mysql,结果...
本文小编为大家详细介绍“怎么查看PostgreSQL数据库中所有表...
错误现象问题原因这是在远程连接时pg_hba.conf文件没有配置正...
因本地资源有限,在公共测试环境搭建了PGsql环境,从数据库本...
wamp 环境 这个提示就是说你的版本低于10了。 先打印ph...
psycopg2.OperationalError: SSL SYSCALL error: EOF detect...