0

所以,我一直在努力设置一个pg_dumpall,但如果不输入密码我就无法让它工作。

我努力了:

如何将密码传递给 pg_dump?

然后到这里:

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

仍然没有运气。

我的弦和反应:

pg_dumpall -U user > /path/to_my/folder/test2.sql 
Password: 
Password: 
Password: 
Password: 
Password: 
Password: 
Password: 
Password: 
Password: 
Password: 

(当我让它在没有密码的情况下工作时,我会把它变成一个 bash 脚本)

我曾尝试使用-w,但除非有密码,否则它不会转储。我也将该 .pgpass 文件放在我的主目录中,并尝试将它们移动到其他用户的主目录。

也许我只是没有让我的文件正确,或者我不知道它可能在错误的地方,但这里是:

*:*:*:user:password

任何帮助都会很棒。
谢谢

4

1 回答 1

2

我不确定 PGPASSWORD 环境变量在哪里

默认情况下,它永远不会设置在任何地方。

但无论如何,像这样在本地使用它可能更简单:

PGPASSWORD=yourpassword pg_dumpall -U user > /path/to_my/folder/test2.sql 

这样做,该变量将仅在转储期间存在。


编辑有关此技术的安全性:

@Peter 的评论可能与 postgres 手册中的这个警告有关:

出于安全原因,不建议使用此环境变量,因为某些操作系统允许非 root 用户通过 ps 查看进程环境变量

但是有些操作系统非常模糊,环顾四周,似乎没有人认真相信现代操作系统有任何这样的缺陷。

security.SE 涵盖了我认为有用的相关问答中的主题:

通过流程环境传递敏感数据是否安全?

Linux中的环境变量可访问性

就我个人而言,我很高兴绕过 postgres 安全警告。但这不应该阻止任何人对他自己的操作系统进行自己的研究,特别是如果它是异国情调或过时的。

于 2013-10-10T00:31:13.047 回答