【问题标题】:pg_dump password in pythonpython中的pg_dump密码
【发布时间】:2015-08-09 01:18:18
【问题描述】:

我有一个 ubuntu 远程服务器,比如 172.123.342.12。我想通过 python 脚本在我的本地机器上备份一个 postgresql 数据库。

我的脚本是:

def backUp(self):
        Pass = 'fb2024d4'
        os.putenv("PGPASSWORD",Pass)
        dt = datetime.now()
        format = "%Y_%b_%d"
        cur_time = dt.now()
        form_time = cur_time.strftime(format)
        backup_str = "C:\\Bitnami\\odoo-8.0-7\\postgresql\\bin\\pg_dump.exe --format=c -h 172.123.342.12 -p 5432 -d new_db -U bn_openerp > C:\\Users\\n\\Desktop\\Odoo_Backups\\%s.dump" %form_time
        os.system(backup_str)
        print ("Backup Created in Desktop")
        box.showinfo("Information", "Backup Created")

backup()

它什么都不做。我们将不胜感激。

编辑:当我使用管理员帐户时,该脚本适用于 Windows 上的数据库。所以它不要求输入密码。但是当我尝试从远程 ubuntu 服务器备份数据库时。它要求输入密码。 我尝试了以下解决方案:

1.) SET PGPASSPASSWORD = C:\foo\bar..\pgpass.conf.
2.) os.putenv("PGPASSWORD","password")
3.) PGPASSWORD='password' pg_dump.exe -h localhost.....

没有人为我工作。

【问题讨论】:

  • 你不能在 ubuntu 上运行 "backup_str = "C:\\Bitnami\\odoo-8.0-7\\postgresql\\bin\\pg_dump.exe"...
  • 您可以将密码保存在 .pgpass 文件中
  • 我在本地 Windows 机器上运行它。我已经安装了 postgresql。所以我只需要传递参数 -h -p -d -U 剩下的就交给它了。这就是为什么我问如何在 Windows 中传递 postgres 密码
  • save apassword to pgpass file - read postgresql.org/docs/9.1/static/libpq-pgpass.html "在 Microsoft Windows 上,该文件名为 %APPDATA%\postgresql\pgpass.conf(其中 %APPDATA% 指的是用户配置文件中的应用程序数据子目录)。” (c)
  • 你能详细说明一下吗?文件 pgpass.conf 在你说的目录中。我编辑了它并保存了密码

标签: python postgresql pg-dump


【解决方案1】:

我能够使用 python 脚本使用 pg_dump.exe 创建转储文件:

filename = 'C:/Path/To/File/mydb_dump.sql'
pgDump = 'C:/Program Files/PostgeSQL/9.5/bin/pg_dump'

subprocess.Popen('"{}" -h 127.0.0.1 dbname > "{}"'.format(pgDump, filename), shell=True)

需要注意的几点:

我强烈反对使用 shell=True !!!

根据documentation,可能的外壳注入存在巨大的安全隐患。

我不确定是否可以与 remote Ubuntu 服务器一起使用,但如果所有权限和共享设置正确,我不明白为什么不这样做。



我知道这已经很老了,但我希望它有所帮助。

【讨论】:

    猜你喜欢
    • 2019-06-26
    • 2017-09-08
    • 2011-02-23
    • 2014-08-23
    • 2016-10-22
    • 1970-01-01
    • 2023-02-04
    • 2017-04-01
    • 1970-01-01
    相关资源
    最近更新 更多