数据库: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
选项是不必要的,并且与您的问题无关。