为什么 pg_dump 'trust' 身份验证在 root 用户下失败,而在另一个用户下却可以工作?

为什么 pg_dump 'trust' 身份验证在 root 用户下失败,而在另一个用户下却可以工作?

我在 cron 中有一个 pg_dump 命令,它以用户 postgres 下访问 PostgreSQL 并且不提供密码。

pg_dump --username=postgres ...

我已经在 pg_hba.conf 中设置,对于来自本地主机的所有数据库,用户 postgres 都应该被信任。

local all postgres trust

当我以普通用户身份运行该命令时,它可以正常工作。
当我以 root (sudo -i) 身份运行该命令时,它需要密码,因此 crontab 任务无法进行身份验证。

有人能向我解释一下这里发生了什么吗?

免责声明:我是 Linux 新手。

答案1

这家伙是我的英雄:http://archives.postgresql.org/pgsql-admin/2011-03/msg00228.php

“--host=localhost”选项表示您正在使用 TCP/IP 连接(因此是 pg_hba.conf 的“主机行”),因此它要求进行 md5 身份验证。因此需要密码。

如果没有要求某个用户输入密码,那么可能是因为该用户有一个 .pgpass 文件告诉 pg_dump 要使用哪个密码。

换句话说- 主持人开关(我没有提到)是为什么我的 pg_hba.conf 中的“本地”行与该命令无关的原因。

相关内容