复制PostgreSQL数据库时,在何处存储本地主机和远程服务器的密码
在Windows7上,我尝试将本地数据库复制到远程服务器上已经存在的空数据库,因此键入命令复制PostgreSQL数据库时,在何处存储本地主机和远程服务器的密码,postgresql,Postgresql,在Windows7上,我尝试将本地数据库复制到远程服务器上已经存在的空数据库,因此键入命令 pg_dump -h localhost -U postgres -d postgres | psql -h remotehost -U remoteuser -d dbname -W 我已经为我的本地主机设置了PGPASSWORD环境变量,我还在C:\Users\Administrator\AppData\Roaming\postgresql\pgpass.conf中设置了远程服务器的密码,但我仍然需
pg_dump -h localhost -U postgres -d postgres | psql -h remotehost -U remoteuser -d dbname -W
我已经为我的本地主机设置了PGPASSWORD
环境变量,我还在C:\Users\Administrator\AppData\Roaming\postgresql\pgpass.conf
中设置了远程服务器的密码,但我仍然需要添加-W
并手动键入冗长的密码,否则我将导致密码验证失败
PGPASSWORD
和pgpass.conf
中的密码之间有什么关系?我可以在某个地方记录远程服务器的长密码,这样我就不需要手动键入了吗?PGPASSWORD
覆盖了pgpass.conf
,这就是您看到这种行为的原因
该文件指出(我的重点):
用户主页中的.pgpass文件
目录或PGPASSFILE引用的文件可以包含密码
在连接需要密码(且无密码时使用
已另外指定)
有关更多信息,请参阅
支持两者的一个选项是让批处理或cmd文件包装psql命令,并相应地设置PGPASSWORD
环境变量,这取决于它是本地主机还是远程主机
另一种方法是保留多个密码文件,并设置环境变量PGPASSFILE
。这两个选项中,此选项更安全,因为您可以对不同的文件设置不同的权限,并且它们不会直接暴露在可共享的环境变量中
有关更多信息,请参阅
编辑:
正如Richard Huxton在下面的评论中提到的,两个密码也可以放在同一个密码文件中。当然,也可以将两个密码放在同一个密码文件中。