在 Heroku 上自动化 PSQL 数据库的 PG_DUMP

Posted

技术标签:

【中文标题】在 Heroku 上自动化 PSQL 数据库的 PG_DUMP【英文标题】:Automating a PG_DUMP of a PSQL database on Heroku 【发布时间】:2017-03-06 20:08:56 【问题描述】:

我正在尝试将 Heroku 托管的 PSQL 数据库中的某些模式 pg_dump 转储到本地文件中。

Heroku 为我提供了DATABASE_URL 格式

# postgres://username:password@host:port/database
postgres://abcde:wxyz@ec2-21-82-72-112.compute-1.amazonaws.com:5762/riza3dj029012

基于以上我尝试转储一些模式 -

> pg_dump --username=abcde --host=ec2-21-82-72-112.compute-1.amazonaws.com --port=5762 --dbname=riza3dj029012 --create --schema=my_schema --password  > ~/pg_dump.dmp
> password: (enter password)

有什么方法可以将密码作为标志提供,这样我就不必手动输入了?我想在脚本中自动执行此操作。

我知道--no-password 存在,但不确定它有什么用,因为它只是阻止提示输入密码然后身份验证(显然)失败。

谢谢!

【问题讨论】:

您是否尝试过像 postgresql.org/docs/9.5/static/libpq-pgpass.html 或 ***.com/questions/2893954/… 那样制作 .pgpass 文件? 这对我有用,谢谢。虽然它有效,但并不理想,因为我必须在本地机器上使用我的生产凭据创建一个文件。如果脚本失败,pgpass 文件没有被清除,我的本地计算机现在持有生产数据库凭据 - 非常糟糕的安全实践,尤其是在经过严格安全审计的公司中。我希望 PSQL 只使用密码命令行选项。 【参考方案1】:

正如@eabates 在 cmets 中提到的,您可以为此创建一个 .pgpass 文件。更多信息可以在 Postgres 的官方文档中找到:https://www.postgresql.org/docs/9.5/static/libpq-pgpass.html

只需在用户主目录中创建一个名为 .pgpass 的文件,其中包含所需的行数,格式如下:

hostname:port:database:username:password

【讨论】:

以上是关于在 Heroku 上自动化 PSQL 数据库的 PG_DUMP的主要内容,如果未能解决你的问题,请参考以下文章

如何在heroku psql上创建表?

无法通过 heroku pg:psql 连接(无响应)[Windows]

如何在heroku上执行.sql脚本?

Heroku Postgres:“psql:致命:主机没有 pg_hba.conf 条目”

如何浏览我的 Heroku 数据库?

警告:psql 主要版本 9.3,服务器主要版本 9.4