复制PostgreSQL数据库时,本地主机和远程服务器的密码存储位置

时间:2014-12-30 04:44:08

标签: postgresql

在Windows 7上,我尝试将本地数据库复制到远程服务器上已存在的空数据库,因此我输入命令

pg_dump -h localhost -U postgres -d postgres | psql -h remotehost -U remoteuser -d dbname -W

我为我的localhost设置了PGPASSWORD环境变量,我还在C:\Users\Administrator\AppData\Roaming\postgresql\pgpass.conf中设置了远程服务器的密码,但我仍然需要添加-W并输入冗长的手动密码,否则我会得到密码验证失败。

PGPASSWORDpgpass.conf中密码之间的关系是什么?我可以在某个地方记录远程服务器的冗长密码,这样我就不需要手动输入了吗?

1 个答案:

答案 0 :(得分:2)

PGPASSWORD 覆盖 pgpass.conf,这就是您看到该行为的原因。

文件陈述(强调我的):

  

用户家中的文件.pgpass   目录或PGPASSFILE引用的文件可以包含密码   如果连接需要密码(且没有密码),则使用此选项   已另有规定)。

有关详细信息,请参阅Password File doc

支持两者的一个选项是让 cmd 文件包装 psql 命令并设置PGPASSWORD环境相应的变量,取决于它是本地还是远程主机。

另一种方法是保留多个密码文件并改为设置环境变量PGPASSFILE。此选项更安全,因为您可以对各种文件设置不同的权限,并且它们不会直接暴露在可共享的环境变量中。

有关详细信息,请参阅Environment Variable doc

修改

正如Richard Huxton在下面的评论中提到的,两个密码也可以放在同一个密码文件中。