这完全取决于您如何在pg_hba.conf
. 每个数据库集群有一个单独的配置文件(有效地每个端口),并且设置可能因数据库而异。
所以,是的,如果您以这种方式进行设置,那么系统用户postgres
将对某些数据库进行无密码访问,但系统会提示您输入其他数据库的密码。默认情况下,系统用户postgres
作为同名数据库用户 ( ) 可以无密码访问每个数据库postgres
。
如果您在带有环境变量PGPASSWORD
的命令中提供密码,但不需要密码,它将被静默忽略。
但是,我在这里引用手册:
PGPASSWORD (...) 出于安全原因,不建议使用此环境变量。
您可以使用密码文件自动提供密码(.pgpass
在 Unix 系统上)。pg_dump
会使用它。
最后,考虑命令行选项:
--no-password
--password
强制 pg_dump 提示或不提示输入密码。如果需要密码但被 禁用--no-password
,则 pg_dump 将失败。
我将为系统用户启用对配置文件中每个数据库的无密码访问。使用或认证方法。然后您不必提供密码,脚本将始终有效:postgres
pg_hba.conf
peer
ident
local all postgres ident
您的脚本将简化为(未经测试):
sudo("su postgres -c \"pg_dump %s > /tmp/telemedia_newdb\"" % (HOST_SOURCE_DB))