Postgresql 我怎样才能传递密码到pg_dump 10时。主目录中的pgpass不是一个选项?

Postgresql 我怎样才能传递密码到pg_dump 10时。主目录中的pgpass不是一个选项?,postgresql,authentication,pg-dump,Postgresql,Authentication,Pg Dump,我正在运行一个cron作业,它使用pg_dump命令创建一个数据库转储,如下所示: export PGPASSWORD="XXXXXXXX"; pg_dump -h localhost -U my_user my_db > /tmp/db_dump.sql 但当我运行此命令时,会出现密码验证错误: pg_dump: [archiver (db)] connection to database "my_db" failed: FATAL: password authentication

我正在运行一个cron作业,它使用
pg_dump
命令创建一个数据库转储,如下所示:

export PGPASSWORD="XXXXXXXX"; pg_dump -h localhost -U my_user my_db > /tmp/db_dump.sql
但当我运行此命令时,会出现密码验证错误:

pg_dump: [archiver (db)] connection to database "my_db" failed: FATAL:  password authentication failed for user "my_user"
FATAL:  password authentication failed for user "my_user"
我无法将
.pgpass
文件放在运行cron的用户下面,但我可以将其放在其他位置并指定
PGPASSFILE
,如下所示:

export PGPASSFILE=/path/to/.pgpass; pg_dump -h localhost -U my_user my_db > /tmp/db_dump.sql
但这同样会返回相同的身份验证错误。我已经确认这不是密码错误的问题,因为当我使用交互式提示时,它会起作用:

pg_dump --password -h localhost -U my_user my_db > /tmp/db_dump.sql
Password: XXXXXXXX
当我查看文档时,环境变量中似乎缺少了
PGPASSWORD
PGPASSFILE
(可能已删除?)

如果我无法在运行脚本的用户的主目录中创建
.pgpass
文件,我还可以如何运行
pg_dump
命令

在上下文中,我运行的是
pg_dump
10.6版:

pg_dump --version
pg_dump (PostgreSQL) 10.6 (Ubuntu 10.6-0ubuntu0.18.04.1)

如果所有
$
*
\
都正确转义,则原始语句将有效

使用单引号而不是双引号是更好的解决方案,因为注释中建议使用带有“无”名称的“马”:

export PGPASSWORD='XXXXXXXX'; pg_dump -h localhost -U my_user my_db > /tmp/db_dump.sql
使用密码总是令人讨厌的,因为它必须以明文形式存在


还有其他选择,比如使用
trust
身份验证(使用非常有限的
pg_hba.conf
条目)或证书身份验证。

第一个命令应该可以工作。我假设您只是指定了错误的密码。另一个选项是指定完整的密码。不幸的是,这不是问题,当我在交互提示中输入密码时,它可以工作。我将更新问题以添加该详细信息!您是否尝试删除双引号rom的
export
命令?设置
PGPASSWORD
确实有效,我敢肯定你出于某种原因传递了一个错误的密码。我不得不保留引号,因为密码中有特殊字符,但切换到单引号就成功了!谢谢!