我在 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 中的“本地”行与该命令无关的原因。