Postgres pgpass windows-不工作

Postgres pgpass windows-不工作

数据库:Postgres 9.0 客户端:Windows 7 Server Windows 2008,64位

我正在尝试远程连接到 postgres 实例以执行pg_dump到我的本地机器。

在我的客户端机器上一切都正常,只是我需要在密码提示时提供密码,最终我想用脚本来批处理这个操作。

我已遵循此处的说明:

http://www.postgresql.org/docs/current/static/libpq-pgpass.html

但它不起作用。

回顾一下,我在客户端上创建了一个文件(并且也尝试了服务器):C:/Users/postgres/AppData/postgresql/pgpass.conf,其中 postgresql 是数据库用户。

该文件有一行包含以下数据:

\*:5432:\*postgres:[mypassword]

(还尝试了明确的 ip/dbname 值、所有星号以及介于两者之间的所有组合。

(我也尝试分别用 [localhost|myip] 和 [mydatabasename] 替换每个‘*’。

从我的客户端机器,我使用以下方式进行连接:

pg_dump -h [myip] -U postgres -w [mydbname] > [mylocaldumpfile]

我假设我需要提供“-w”开关以忽略密码提示,此时它应该查看服务器上的 AppData 目录。

它只是返回“连接数据库失败:fe_sendauth:未提供密码。

任何见解都值得赞赏。

作为一种解决方法,如果我可以有办法告诉客户端计算机上的 Windows 批处理文件在 Postgres 提示符下注入密码,那么这样也可以。

谢谢。

答案1

请使用此脚本生成备份。

PGPASSWORD='database password'
PGUSER='database user'
PGHOST='localhost'
PGPORT='psql portno'
PGDATABASE='database name'
pg_dump -Ft <database name> -x -O -f '<backup file name.tar>'

答案2

我会尝试等效的方法strace来查看它是否在寻找、在哪里寻找pgpass.conf以及用它做什么。

-w选项是不必要的,并且与您的问题无关。

相关内容