如何将密码传递给 pg_dump 10 when .主目录中的 pgpass 不是一个选项?
How can I pass a password to pg_dump 10 when . pgpass in home directory is not an option?
我正在 运行 使用 pg_dump
命令创建数据库转储的 cron 作业,如下所示:
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
但是这个 returns 同样的身份验证错误。我已经确认这不是密码错误的问题,因为当我使用交互式提示时它有效:
pg_dump --password -h localhost -U my_user my_db > /tmp/db_dump.sql
Password: XXXXXXXX
当我查看文档时,环境变量中似乎缺少 PGPASSWORD
和 PGPASSFILE
(也许它们已被删除?)https://www.postgresql.org/docs/10/app-pgdump.html
如果我无法在用户 运行ning 脚本的主目录中创建 .pgpass
文件,我还能如何 运行 pg_dump
命令?
对于上下文,我是 运行ning pg_dump
版本 10.6:
pg_dump --version
pg_dump (PostgreSQL) 10.6 (Ubuntu 10.6-0ubuntu0.18.04.1)
如果所有 $
、?
、*
、"
和 \
都正确转义,您的原始语句将有效。
使用单引号而不是双引号是更好的解决方案,正如 a_horse_with_no_name 在评论中建议的那样:
export PGPASSWORD='XXXXXXXX'; pg_dump -h localhost -U my_user my_db > /tmp/db_dump.sql
使用密码总是令人讨厌,因为它必须以明文形式存在。
还有其他选择,例如使用 trust
身份验证(具有非常有限的 pg_hba.conf
条目)或证书身份验证。
我正在 运行 使用 pg_dump
命令创建数据库转储的 cron 作业,如下所示:
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
但是这个 returns 同样的身份验证错误。我已经确认这不是密码错误的问题,因为当我使用交互式提示时它有效:
pg_dump --password -h localhost -U my_user my_db > /tmp/db_dump.sql
Password: XXXXXXXX
当我查看文档时,环境变量中似乎缺少 PGPASSWORD
和 PGPASSFILE
(也许它们已被删除?)https://www.postgresql.org/docs/10/app-pgdump.html
如果我无法在用户 运行ning 脚本的主目录中创建 .pgpass
文件,我还能如何 运行 pg_dump
命令?
对于上下文,我是 运行ning pg_dump
版本 10.6:
pg_dump --version
pg_dump (PostgreSQL) 10.6 (Ubuntu 10.6-0ubuntu0.18.04.1)
如果所有 $
、?
、*
、"
和 \
都正确转义,您的原始语句将有效。
使用单引号而不是双引号是更好的解决方案,正如 a_horse_with_no_name 在评论中建议的那样:
export PGPASSWORD='XXXXXXXX'; pg_dump -h localhost -U my_user my_db > /tmp/db_dump.sql
使用密码总是令人讨厌,因为它必须以明文形式存在。
还有其他选择,例如使用 trust
身份验证(具有非常有限的 pg_hba.conf
条目)或证书身份验证。