Verbindung von pgAdmin3 mit Postgres auf Heroku

9

Ich verwende eine Heroku Postgres-Datenbank ( Database ) in Verbindung mit einer Django-App. Die Dokumente, die auf das Add-On verweisen, finden Sie hier . Ich dachte, dies wäre eine lohnende Frage für die Community, da Heroku seine Benutzer heute darauf aufmerksam machte, dass alles aus dem Shared-Database-Add-On migriert wird, das früher Standard war.

Ich habe Probleme beim Verbinden von pgAdmin3 mit der Datenbank.

Gemäß den Anweisungen im obigen Link greife ich mit dem folgenden Befehl auf die Anmeldeinformationen der Datenbank:

$ heroku pg:credentials HEROKU_POSTGRESQL_OLIVE

Ich verwende eine Homebrew-Installation von Postgresql unter Mac OSX.

In der Zwischenzeit habe ich:

  • SSL in meiner pg_postgresql.conf eingeschaltet;
  • Einstellung hinzugefügt: listen_addresses = '*'
  • und hinzugefügt host all all 0.0.0.0/0 md5
  • und startete meinen Postgres-Server neu.

Dann gehe ich zu pgAdmin3 und wähle File > Add Server.

Ich gebe die von Heroku bereitgestellten Anmeldeinformationen wie folgt ein (erstens der Name der Heroku-Anmeldeinformationen, zweitens der Feldname pgAdmin):

Auf der Registerkarte "Eigenschaften":

  • Datenbankname in Name;
  • Host in Host;
  • Hafen in Hafen;
  • Ich lasse das Feld pgAdmin für "Wartungsdatenbank" leer.
  • Benutzer in Benutzername;
  • Passwort in Passwort;

Auf der Registerkarte SSL:

  • Im Feld für SSL wähle ich "erfordern" (wie von Heroku angewiesen).

Ich drücke die Eingabetaste und pgAdmin denkt nach und gibt dann einen Fehler wie folgt aus:

An error has occurred:

Error connecting to the server: FATAL: permission denied for database "postgres"
DETAIL: User does not have CONNECT privilege.

Ich bin mir nicht sicher, was ich zu diesem Zeitpunkt tun soll. Würde mich über Hinweise freuen.

Klopfen
quelle
pgadmin.org/docs/1.8/connect.html sagt: The maintenance DB field is used to specify the initial database that pgAdmin connects to, and that will be expected to have the pgAgent schema and adminpack objects installed (both optional). On PostgreSQL 8.1 and above, the maintenance DB is normally called ‘postgres’- und das ist es, womit pgAdmin versucht hat, eine Verbindung herzustellen. Geben Sie das Passwort des postgresBenutzers ein.
Dekso

Antworten:

6

Vielen Dank an @araqnid on Stack Overflow für die Antwort hier .

Von dort wörtlich zitiert:

Öffnen Sie die "Eigenschaften" des Heroku-Servers in pgAdminIII und ändern Sie den Wert "Maintenance DB" in den Namen der Datenbank, zu der Sie eine Verbindung herstellen möchten. Das Standard-Setup eignet sich für DBAs et al., Die eine Verbindung zu einer beliebigen Datenbank auf dem Server herstellen können. In Ihrem Fall ist dies jedoch anscheinend nicht der Fall.

Das hat bei mir funktioniert!

Klopfen
quelle
Dies öffnete jedoch die 1368-Datenbanken. selbst wenn ich Maintenance DB als meinen
Sunil Garg
3

FATAL: permission denied for database "postgres"zeigt an, dass versucht wird, eine Verbindung zur Postgres-Datenbank herzustellen. Wir gewähren solche Privilegien in der Tat nicht. Sie können jedoch eine Verbindung zu Ihrer eigenen Datenbank herstellen, das sollte in Ordnung sein. Sie können dies beweisen, indem Sie eine Verbindung über die psql-CLI herstellen.

Es scheint, dass Sie Herokus dbnameauf etwas setzen, das Namein pgadmin genannt wird. Das scheint der "Verbindungsname" für das zu sein, was Sie dort erstellen (etwas Willkürliches, um später darauf zu verweisen), aber gibt es nicht einen Ort, an dem Sie den tatsächlichen Datenbanknamen festlegen können, damit er nicht standardmäßig verwendet wird postgres?

Ich bin kein pgadmin-Benutzer, sondern suche nur nach gefundenen Dokumenten [1], in denen Folgendes angegeben ist:

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

Könnten Sie das versuchen?

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

hgmnz
quelle
1

Führen Sie den folgenden Befehl aus, um die Datenbankanmeldeinformationen von Heroku abzurufen:

heroku pg:credentials DATABASE_URL

Dann können Sie ein GUI-Tool wie PG Commander oder PGAdmin verwenden, um eine Verbindung zur Datenbank herzustellen.

Hexinpeter
quelle