Collegamento di pgAdmin3 a Postgres su Heroku


9

Sto eseguendo un database Heroku Postgres ( Database ) in associazione con un'app Django. I documenti che fanno riferimento al componente aggiuntivo sono qui . Ho pensato che questa sarebbe stata una domanda utile per la comunità perché oggi Heroku ha avvisato i suoi utenti che eseguirà la migrazione di tutto il componente aggiuntivo del database condiviso che era predefinito.

Ho dei problemi a connettere pgAdmin3 al database.

Come da istruzioni nel link sopra, afferro le credenziali del database con il seguente comando:

$ heroku pg:credentials HEROKU_POSTGRESQL_OLIVE

Sto usando un'installazione homebrew di Postgresql su Mac OSX.

Nel frattempo, ho:

  • attivato SSL nel mio pg_postgresql.conf;
  • aggiunta l'impostazione: listen_addresses = '*'
  • e aggiunse host all all 0.0.0.0/0 md5
  • e riavviato il mio server Postgres.

Quindi vado su pgAdmin3 e seleziono File > Add Server.

Inserisco le credenziali fornite da Heroku come segue (il primo è il nome delle credenziali Heroku, il secondo è il nome del campo pgAdmin):

Nella scheda "Proprietà":

  • dbname in Nome;
  • host in Host;
  • porto in porto;
  • Lascio vuoto il campo pgAdmin per "Database manutenzione";
  • utente nel nome utente;
  • password in password;

Nella scheda SSL:

  • Nel campo SSL, seleziono "richiedi" (come indicato da Heroku).

Ho premuto invio e pgAdmin pensa, quindi genera un errore come segue:

An error has occurred:

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

Non sono sicuro di cosa fare a questo punto. Gradirei qualsiasi suggerimento.


pgadmin.org/docs/1.8/connect.html dice: 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’- ed è a questo che pgAdmin ha provato a connettersi. Fornire la password postgresdell'utente.
dezso

Risposte:


6

Grazie a @araqnid su Stack Overflow per la risposta qui .

Verbatim citato da lì:

Aprire le "Proprietà" del server Heroku in pgAdminIII e modificare il valore "DB di manutenzione" in modo che sia il nome del database a cui connettersi. L'impostazione predefinita è adatta a DBA e altri che possono connettersi a qualsiasi database sul server, ma a quanto pare non è vero nel tuo caso.

Questo ha funzionato per me!


ma questo ha aperto i 1368 database. anche se ho aggiunto DB di manutenzione come nome del mio db
Sunil Garg il

3

FATAL: permission denied for database "postgres"indica che sta tentando di connettersi al database postgres. In effetti non concediamo tali privilegi. Tuttavia, è possibile connettersi al proprio database, che dovrebbe andare bene. Puoi dimostrarlo collegandoti tramite l'interfaccia della riga di comando psql.

Sembra che stai impostando heroku dbnamesu qualcosa chiamato Namein pgadmin. Questo sembra essere il "nome della connessione" per quello che stai creando lì (qualcosa di arbitrario a cui fare riferimento in un secondo momento), ma non esiste un luogo in cui è possibile impostare il nome effettivo del database, in modo che non sia predefinito postgres?

Non sono un utente pgadmin, ma sto solo cercando nei documenti trovati [1] che specificano quanto segue:

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

Potresti provarlo?

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


1

Eseguire il comando seguente per ottenere le credenziali del database da Heroku:

heroku pg:credentials DATABASE_URL

Quindi è possibile utilizzare uno strumento GUI come PG Commander o PGAdmin per connettersi al db.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.