pg_dumpall 需要啥才能在没有密码的情况下工作?
Posted
技术标签:
【中文标题】pg_dumpall 需要啥才能在没有密码的情况下工作?【英文标题】:What do I need for pg_dumpall to work without a password?pg_dumpall 需要什么才能在没有密码的情况下工作? 【发布时间】:2013-10-17 10:55:41 【问题描述】:所以,我一直在努力设置pg_dumpall
,但如果不输入密码,我无法让它工作。
我试过了:
How to pass in password to 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
任何帮助都会很棒。 谢谢
【问题讨论】:
您是否看到有关文件权限的评论(您链接到的手册中的最后一段)。您也可以尝试使用PGPASSWORD
环境变量。
是的,我做到了。我已将权限更改为 600,但我不确定 PGPASSWORD 环境变量在哪里。我查看了/etc/
和/var/
中的ppostgres 文件
这通常在您的操作系统用户的.bashrc
或.profile
“登录脚本”中设置。与您设置 PATH
或其他环境变量的位置相同。
我也没有看到
你必须添加那些脚本。您可能想退后一步,了解环境变量在 Linux 中的工作原理。
【参考方案1】:
我不确定 PGPASSWORD 环境变量在哪里
默认情况下从不设置。
但无论如何,像这样在本地使用它可能更简单:
PGPASSWORD=yourpassword pg_dumpall -U user > /path/to_my/folder/test2.sql
这样做,变量只会在转储期间存在。
编辑关于这种技术的安全性:
@Peter's comment 大概与 postgres 手册中的这个警告有关:
出于安全原因,不建议使用此环境变量,因为 一些操作系统允许非root用户查看进程环境 通过 ps 变量
但是一些操作系统非常模糊,环顾四周似乎没有人认真相信现代操作系统有任何这样的缺陷。
security.SE 涵盖了我认为有用的相关问答中的主题:
Is passing sensitive data through the process environment secure?
environment variable accessibility in Linux
我个人对此很满意,可以绕过 postgres 安全警告。但这不应该阻止任何人对自己的操作系统进行自己的研究,特别是如果它是异国情调或过时的。
【讨论】:
这将允许任何登录系统的人看到您的密码。 顺便说一句:还有PGPASSFILE
,它应该指向一个包含密码的文件。从ps
可以看到文件位置,但看不到它的内容(给定适当的权限):postgresql.org/docs/9.3/static/libpq-envars.html
请注意,此命令将最终出现在您的命令历史记录中。如果你想避免这种情况,请在前面加上一个空格。以上是关于pg_dumpall 需要啥才能在没有密码的情况下工作?的主要内容,如果未能解决你的问题,请参考以下文章
苹果证书,有啥方法可以在没有代理的情况下提交给 iTunes?