在 Heroku 上将 pgAdmin3 连接到 Postgres

Pat*_*Pat 10 postgresql pgadmin

我正在运行与 Django 应用程序关联的 Heroku Postgres 数据库 ( Database )。引用附加组件的文档在这里。我认为这对社区来说是一个值得提出的问题,因为 Heroku 今天提醒其用户,它将从以前默认的共享数据库附加组件中迁移所有内容。

我在将 pgAdmin3 连接到数据库时遇到了一些问题。

按照上面链接中的说明,我使用以下命令获取数据库的凭据:

$ heroku pg:credentials HEROKU_POSTGRESQL_OLIVE
Run Code Online (Sandbox Code Playgroud)

我在 Mac OSX 上使用自制的 Postgresql 安装。

与此同时,我有:

  • 在我的 pg_postgresql.conf 中打开 SSL;
  • 添加了设置: listen_addresses = '*'
  • 并添加 host all all 0.0.0.0/0 md5
  • 并重新启动了我的 postgres 服务器。

然后我去 pgAdmin3 并选择File > Add Server.

我输入 Heroku 提供的凭据如下(第一个是 Heroku 凭据名称,第二个是 pgAdmin 字段名称):

在“属性”选项卡中:

  • dbname 到 Name;
  • 主机变成主机;
  • 端口到端口;
  • 我将“维护数据库”的 pgAdmin 字段留空;
  • 用户进入用户名;
  • 密码改成密码;

在 SSL 选项卡中:

  • 我是 SSL 的字段,我选择“需要”(按照 Heroku 的指示)。

我按回车,pgAdmin 想了想,然后抛出如下错误:

An error has occurred:

Error connecting to the server: FATAL: permission denied for database "postgres"
DETAIL: User does not have CONNECT privilege.
Run Code Online (Sandbox Code Playgroud)

不知道此时该怎么办。将不胜感激任何指针。

Pat*_*Pat 6

感谢 Stack Overflow 上的 @araqnid 在此处提供答案。

从那里逐字引用:

在 pgAdminIII 中打开 Heroku 服务器的“属性”并将“维护数据库”值更改为要连接的数据库的名称。默认设置适用于 DBA 等人,他们可以连接到服务器上的任何数据库,但显然在您的情况下并非如此。

这对我有用!


小智 3

FATAL: permission denied for database "postgres"表明它正在尝试连接到 postgres 数据库。我们确实不授予这样的特权。不过,您可以连接到自己的数据库,这应该没问题。您可以通过 psql CLI 连接来证明这一点。

看来您正在将 heroku 设置dbname为 pgadmin 中调用的内容Name。这似乎是您在那里创建的内容的“连接名称”(稍后可以任意引用它),但是没有一个地方可以设置实际的数据库名称,这样它就不会默认为postgres

我不是 pgadmin 用户,但只是搜索找到的文档[1],其中指定了以下内容:

The maintenance DB field is used to specify the initial database that pgAdmin connects to

你能尝试一下吗?

[1] http://www.pgadmin.org/docs/dev/connect.html