在 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 pg:psql 连接(无响应)[Windows]