gpt4 book ai didi

postgresql - . 时如何将密码传递给 pg_dump 10主目录中的 pgpass 不是一个选项?

转载 作者:行者123 更新时间:2023-12-05 08:22:55 25 4
gpt4 key购买 nike

我正在运行一个使用 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"

我无法在运行 cron 的用户下放置一个 .pgpass 文件,但我可以将它放置在其他地方并指定 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

当我查看文档时,环境变量中似乎缺少 PGPASSWORDPGPASSFILE(也许它们已被删除?)https://www.postgresql.org/docs/10/app-pgdump.html

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

对于上下文,我正在运行 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 条目)或证书身份验证。

关于postgresql - . 时如何将密码传递给 pg_dump 10主目录中的 pgpass 不是一个选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54548085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com