【发布时间】:2011-05-27 04:51:23
【问题描述】:
数据库:PostgreSQL 9.0 客户端:Windows 7 服务器 Windows 2008,64 位
我正在尝试远程连接到 PostgreSQL 实例,以便对我的本地计算机执行 pg_dump。
一切都在我的客户端机器上运行,除了我需要在密码提示符处提供密码,我最终想用一个脚本来批处理。
我已按照此处的说明进行操作:
http://www.postgresql.org/docs/current/static/libpq-pgpass.html
但它不起作用。
回顾一下,我在服务器上创建了一个文件:C:/Users/postgres/AppData/postgresql/pgpass.conf,其中 PostgreSQL 是 db 用户。
该文件有一行包含以下数据:
\*:5432:\*postgres:[mypassword]
我还尝试将每个* 分别替换为[localhost|myip] 和[mydatabasename]。
在我的客户端机器上,我使用以下方式连接:
pg_dump -h <myip> -U postgres -w [mydbname] > [mylocaldumpfile]
我假设我需要提供-w 开关以忽略密码提示,此时它应该在服务器上的 AppData 目录中查找。
它只是回来了:
连接数据库失败:fe_sendauth:未提供密码。
作为一种解决方法,如果有一种方法可以让我的客户端计算机上的 Windows 批处理文件在 PostgreSQL 提示符处注入密码,那也可以。
【问题讨论】:
-
-h是要连接的主机,你的是空的。pgpass文件中的前四个字段应该是文字值或 *,你的是混合的。pgpass文件应驻留在客户端计算机上,位于发出pg_dump命令的用户的AppData文件夹中 - 您的文件在服务器上。 -
Empty -h 是一个错字。我已经尝试了所有的'',没有'' 以及它们之间的所有组合。我也尝试过使用本地 AppData 文件,但同样的问题。
-
.pgpass 文件的权限是什么?它们需要仅供用户阅读。
-
pg_hba.conf 配置正确吗?
-
pg_hba 配置正确,因为如果我将方法设置为信任,我可以远程登录和备份。 pgpass 文件权限被授予用户。
标签: postgresql