【问题标题】:Restore a PostgreSQL database without setting the password in the environment在环境中不设置密码恢复PostgreSQL数据库
【发布时间】:2014-04-09 21:46:39
【问题描述】:

我需要在 python 中编写一个调用pg_restore 的脚本来恢复数据库。到目前为止,我使用了一个批处理文件,该文件在 PGPASSWORD 中设置了真实密码,并且在还原后它在 var 中设置了垃圾。

我的问题是我必须用SET PGPASSWORD='password'创建一个环境变量,但我不能在环境中暴露密码,因为如果还原时出错,PGPASSWORD将拥有真正的密码。

有没有一种方法可以发送带有密码的恢复命令,就像使用 firebird 一样?

在 PostgreSQL 9.x 中使用 Windows XP/7/8。

【问题讨论】:

    标签: python postgresql passwords connection


    【解决方案1】:

    我建议使用.pgpass file

    在 Microsoft Windows 上,该文件被命名为 %APPDATA%\postgresql\pgpass.conf(其中%APPDATA% 指的是 用户配置文件中的应用程序数据子目录)

    可以设置一个环境变量,但您试图避免这种情况是正确的。 It's discouraged in the manual:

    PGPASSWORD 的行为与密码连接参数相同。采用 出于安全原因,不建议使用此环境变量, 因为某些操作系统允许非 root 用户查看进程 通过 ps 的环境变量;而是考虑使用~/.pgpass 文件

    更多关于无密码访问:
    Run batch file with psql command without password

    【讨论】:

    • Erwin,在您的评论中回复PGPASSWORD 的好点;可能值得在这里添加。
    • @CraigRinger:引用在我链接到的较早答案中。但按照你的建议,我也在这里添加了它。
    猜你喜欢
    • 1970-01-01
    • 2014-10-01
    • 2019-09-08
    • 2012-10-20
    • 1970-01-01
    • 1970-01-01
    • 2014-02-01
    • 2018-04-07
    • 2012-01-22
    相关资源
    最近更新 更多