使用pgadmin连接Heroku数据库

219
我想用pgadmin客户端管理我的Heroku数据库。目前,我一直使用psql进行操作。 当我使用heroku pg:credentials中的数据来连接数据库时,我遇到了以下错误信息:

发生错误:

连接服务器时出错: 关于数据库"postgres"的权限被拒绝 DETAIL: 用户没有CONNECT权限。

如何实现连接?

6个回答

361
打开pgAdmin III中Heroku服务器的“属性”并将“Maintenance DB”值更改为要连接的数据库名称。
默认设置适用于DBAs等可以连接到服务器上的任何数据库,但显然在您的情况下不是这样。 pgAdmin III - 新服务器注册

9
正如另一个答案中所建议的,您需要在连接对话框中选择“SSL | SSL | require”以启用SSL,否则仍将无法连接。 - Brad Parks
如果您有Rails应用程序,可以使用https://github.com/igorkasyanchuk/rails_db访问数据库。 - Igor Kasyanchuk
我在pgadmin 3上遇到了错误,提示你正在尝试连接的服务器不在8.4和9.3之间,虽然它可以连接,但总是显示一个包含159个数据库的列表,并弹出错误提示。 - Abhishek
3
这对我来说突然就不起作用了?还有人能用吗? - Rune Jeppesen
@Ced 我也是,现在 - Windows 已经决定打开我的防火墙并阻止了那个端口 :-/ - Rune Jeppesen
@RuneJeppesen,Heroku表示他们可以随时更新服务器连接属性(数据库名称/用户名/密码)。 - VikR

122

如果你按照上述araqnid的回答建议更改了维护数据库名称,那么你还应该将你的数据库添加到DB限制字段中,因为如果列表太长,没有此操作的话,你将会看到成千上万个数据库,可能无法找到自己的数据库。

更多详细信息请参见 - 如何隐藏我无权访问的数据库


6
在添加数据库名称时,请确保将其用单引号括起来,因为它将用于动态生成“IN”子句以过滤数据库列表。 - Glenn
3
谢谢!正如其更新所提到的,在pgAdmin 4中不要添加引号。 - Ryan

99

这是针对pgAdmin 4的

为了将pgAdmin连接到您的数据库(Heroku中的postgres实例),请执行以下操作:

  1. 登录Heroku,并选择您拥有数据库的应用程序 enter image description here

  2. 选择资源选项卡,然后单击“Heroku Postgres Ad-on”(如下所示)。这将打开一个新选项卡。 enter image description here

  3. 选择设置选项卡,然后单击“查看凭据…”(如下所示) enter image description here

    您将获得以下信息,您将在pgAdmin中使用:

    enter image description here

  4. 进入pgAdmin,并创建一个新服务器 enter image description here

  5. 常规选项卡中,给出一个有用的名称 enter image description here

  6. 连接选项卡中,填写您在Heroku中获得的信息 enter image description here

  7. 为了避免看到数千个数据库,您需要将您的数据库名称添加到高级选项卡中的DB限制中(如下所示) enter image description here


3
我遇到了“无法连接服务器”的问题:致命错误:数据库“postgres”的权限被拒绝 详细信息:用户没有CONNECT权限。 - nassim
1
非常感谢,我之前完全忽略了高级选项卡的最后一部分! - Rodrigo Merlone
1
@Nassim 请确保您在“连接”选项卡中将“维护数据库”字段更改为Heroku URI中“ / ”后面的数据库。 - Jeremy

22

在 Heroku 外部的连接中,我们要求使用 SSL。请确认您是否在客户端强制 SSL。

更全面的答案在此处:连接 pgAdmin3 到 Heroku 上的 Postgres

我们不允许连接到 postgres 数据库,所以请确保将维护数据库设置为您的数据库名称,并确保使用 SSL。


2
我需要任何文件/密钥来强制使用SSL吗?(请原谅我的无知) - Tomas Romero
通常图形界面都会有一个SSL复选框。我不使用pgadmin,但根据文档[1],连接配置对话框中似乎有一个SSL选项卡。[1] http://www.pgadmin.org/docs/dev/connect.html - hgmnz
当我点击SSL选项卡时,它要求我提供证书和密钥,而我并不知道它们的值。 但是,通过将维护数据库名称设置为我的Heroku数据库名称,我可以连接配置仅使用“属性”选项卡,而无需指定任何关于SSL的信息(这显然是自动完成的)。 - Tomas Romero
为了更改属性,请先断开与服务器的连接。 - Aditya Rajgor

11
将Maintenance Database更改为您的数据库名称,例如dva70000p0090。这应该有效。

0

本地数据库密码与Heroku数据库密码不同,请检查Heroku的PostgreSQL地址并提取。


目前您的答案写得不太清楚,请[编辑]以添加更多细节,帮助其他人了解如何回答问题。您可以在帮助中心中找到有关编写良好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接