为什么 pg_dump 忽略 .pgpass?
Why does pg_dump ignore .pgpass?
我创建了一个 .pgpass 文件,它非常适合我的 psql 命令。
chris@ap2155489:~$ psql --host=my.example.com --port=12345 --username=chris -d example_db
psql (9.6.13)
SSL connection (protocol: TLSv1.2, cipher: xxx, bits: 256, compression: off)
Type "help" for help.
example_db=> \q
当我尝试 运行 pg_dump 时,有人询问我的密码。
我对我的 .pgpass 文件做了 chmod 0600
chris@ap2155489:~$ pg_dump --host=my.example.com --port=12345 --username=chris -d example_db -f dbs/test.sql --clean
Password:
我做错了什么?
主目录
中的两个命令运行
更新:
~$ ll /usr/bin/pg_dump
lrwxrwxrwx 1 root root 37 May 9 2019 /usr/bin/pg_dump -> ../share/postgresql-common/pg_wrapper*
~$ ll /usr/bin/psql
lrwxrwxrwx 1 root root 37 May 9 2019 /usr/bin/psql -> ../share/postgresql-common/pg_wrapper*
看来您正在使用安装了 postgresql-client-common
的 Ubuntu 系统。 pg_dump
被 pg_wrapper
重载,但 .pgpass
应该可以工作(我在我的测试系统上试过了,没问题)。看起来你的系统管理员可能做了一些事情(可能是用 Perl?),它的副作用是让你无法将 .pgpass
与 pg_dump
.
一起使用
了解发生了什么的一种可能方法是执行 perl -e "exec env"
并查看 $HOME
var 设置的内容(或者它可能已被清除)。您也可以执行 strace pg_dump
并查看触摸了哪些目录——这将生成大量输出,因此您可能很难处理。
最终,您可能需要 1) 与您的系统管理员交谈,看看是否可以修复环境,以便您可以将 .pgpass
与 pg_wrapper
的伪 pg_dump
,或 2) 直接使用 pg_dump
(通常,它位于 /usr/lib/postgresql/<version_number>/bin/pg_dump
,但您可能应该使用 find /usr -name "pg_dump"
)
我创建了一个 .pgpass 文件,它非常适合我的 psql 命令。
chris@ap2155489:~$ psql --host=my.example.com --port=12345 --username=chris -d example_db
psql (9.6.13)
SSL connection (protocol: TLSv1.2, cipher: xxx, bits: 256, compression: off)
Type "help" for help.
example_db=> \q
当我尝试 运行 pg_dump 时,有人询问我的密码。
我对我的 .pgpass 文件做了 chmod 0600
chris@ap2155489:~$ pg_dump --host=my.example.com --port=12345 --username=chris -d example_db -f dbs/test.sql --clean
Password:
我做错了什么?
主目录
中的两个命令运行更新:
~$ ll /usr/bin/pg_dump
lrwxrwxrwx 1 root root 37 May 9 2019 /usr/bin/pg_dump -> ../share/postgresql-common/pg_wrapper*
~$ ll /usr/bin/psql
lrwxrwxrwx 1 root root 37 May 9 2019 /usr/bin/psql -> ../share/postgresql-common/pg_wrapper*
看来您正在使用安装了 postgresql-client-common
的 Ubuntu 系统。 pg_dump
被 pg_wrapper
重载,但 .pgpass
应该可以工作(我在我的测试系统上试过了,没问题)。看起来你的系统管理员可能做了一些事情(可能是用 Perl?),它的副作用是让你无法将 .pgpass
与 pg_dump
.
了解发生了什么的一种可能方法是执行 perl -e "exec env"
并查看 $HOME
var 设置的内容(或者它可能已被清除)。您也可以执行 strace pg_dump
并查看触摸了哪些目录——这将生成大量输出,因此您可能很难处理。
最终,您可能需要 1) 与您的系统管理员交谈,看看是否可以修复环境,以便您可以将 .pgpass
与 pg_wrapper
的伪 pg_dump
,或 2) 直接使用 pg_dump
(通常,它位于 /usr/lib/postgresql/<version_number>/bin/pg_dump
,但您可能应该使用 find /usr -name "pg_dump"
)