【问题标题】:How can I run pg_dumpall with Heroku?如何使用 Heroku 运行 pg_dumpall?
【发布时间】:2021-03-02 02:16:13
【问题描述】:

如何在 Heroku 中使用 pg_dumpall? Heroku 的默认“数据库备份”功能是pg_dump,只需单击一个按钮,其中不包括角色,所以我想做pg_dumpall ...我正在尝试pg_dumpall -h myherokuurl.compute-1.amazonaws.com -l mypassword -U myUser > dump.sql

我收到此错误:

pg_dumpall: error: query failed: ERROR:  permission denied for table pg_authid
pg_dumpall: error: query was: SELECT oid, rolname, rolsuper, rolinherit, rolcreaterole, rolcreatedb, rolcanlogin, rolconnlimit, rolpassword, rolvaliduntil, rolreplication, rolbypassrls, pg_catalog.shobj_description(oid, 'pg_authid') as rolcomment, rolname = current_user AS is_current_user FROM pg_authid WHERE rolname !~ '^pg_' ORDER BY 2

我的第一个想法是创建一个具有正确权限的新用户。所以,我使用heroku pg:psql DATABASE -a my-app-name 登录,然后尝试create user myUser with password 'mypassword',但得到错误ERROR: permission denied to create role

老实说,我不确定发生了什么,我只是在猜测。任何故障排除想法将不胜感激! (与此同时,我只是想了解更多关于 Postgres 的信息)

【问题讨论】:

  • 如果您使用的是爱好/共享层,则不能使用 pg_dumpall,因为这会获取其他人的数据。如果您为专用服务器付费,那么您也在为支持付费,不是吗?
  • 我在 Heroku Postgres 上的“爱好基础”:devcenter.heroku.com/articles/heroku-postgres-plans 它没有说明您引用的限制。有链接吗?

标签: database postgresql heroku heroku-postgres pg-dumpall


【解决方案1】:

如果您的问题只是关于pg_authid 目录,您应该能够使用pg_dumpall 的最新版本和--no-role-passwords option

这通常适用于无法访问pg_authid 的托管环境,例如在 AWS 上。唯一的缺点是转储中会丢失 Postgres 用户的密码。

但是,您的环境似乎更加有限,可能是共享环境,您甚至无法创建新的 Postgres 用户。我不确定是否有机会让pg_dumpall 在那里工作。

【讨论】:

  • --no-role-passwords 是解决此问题的正确方法。谢谢!!注意:如果pg_dumpall 给你这个错误pg_dumpall: error: could not connect to database "template1": FATAL: permission denied for database "template1",那么这意味着你需要添加一个--database 标志(即使你使用--dbname)。
猜你喜欢
  • 1970-01-01
  • 2016-04-13
  • 2011-05-20
  • 2015-01-14
  • 1970-01-01
  • 1970-01-01
  • 2012-09-11
  • 2014-04-21
  • 2015-04-24
相关资源
最近更新 更多