Connexion de pgAdmin3 à Postgres sur Heroku

9

J'exécute une base de données Heroku Postgres (base de données ) en association avec une application Django. Les documents qui font référence au module complémentaire sont ici . Je pensais que ce serait une question intéressante pour la communauté, car Heroku a averti ses utilisateurs aujourd'hui qu'il migrerait tout du module complémentaire de base de données partagée qui était par défaut.

J'ai du mal à connecter pgAdmin3 à la base de données.

Selon les instructions du lien ci-dessus, j'attrape les informations d'identification de la base de données avec la commande suivante:

$ heroku pg:credentials HEROKU_POSTGRESQL_OLIVE

J'utilise une installation homebrew de Postgresql sur Mac OSX.

En attendant, j'ai:

  • SSL activé dans mon pg_postgresql.conf;
  • ajouté le paramètre: listen_addresses = '*'
  • et ajouté host all all 0.0.0.0/0 md5
  • et redémarré mon serveur postgres.

Ensuite, je vais à pgAdmin3 et sélectionnez File > Add Server.

J'entre les informations d'identification fournies par Heroku comme suit (le premier est le nom des informations d'identification Heroku, le second est le nom du champ pgAdmin):

Dans l'onglet "Propriétés":

  • dbname dans Name;
  • hôte en hôte;
  • port dans le port;
  • Je laisse le champ pgAdmin pour "Maintenance Database" vide;
  • l'utilisateur en nom d'utilisateur;
  • mot de passe dans Password;

Dans l'onglet SSL:

  • Im le champ pour SSL, je sélectionne "exiger" (comme indiqué par Heroku).

J'appuie sur Entrée, et pgAdmin réfléchit, puis lance une erreur comme suit:

An error has occurred:

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

Je ne sais pas quoi faire à ce stade. J'apprécierais tous les conseils.

Tapoter
la source
pgadmin.org/docs/1.8/connect.html dit: 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’- et c'est à cela que pgAdmin a essayé de se connecter. Fournissez le mot de passe de l' postgresutilisateur.
dezso

Réponses:

6

Merci à @araqnid sur Stack Overflow pour la réponse ici .

Verbatim cité à partir de là:

Ouvrez les "Propriétés" du serveur Heroku dans pgAdminIII et modifiez la valeur "Maintenance DB" pour qu'elle soit le nom de la base de données à laquelle vous souhaitez vous connecter. La configuration par défaut convient aux administrateurs de bases de données et autres qui peuvent se connecter à n'importe quelle base de données sur le serveur, mais apparemment, ce n'est pas vrai dans votre cas.

Cela a fonctionné pour moi!

Tapoter
la source
mais cela a ouvert les 1368 bases de données. même si j'ai ajouté Maintenance DB comme nom de base de données
Sunil Garg
3

FATAL: permission denied for database "postgres"indique qu'il essaie de se connecter à la base de données postgres. Nous n'accordons en effet pas de tels privilèges. Vous pouvez cependant vous connecter à votre propre base de données, cela devrait convenir. Vous pouvez le prouver en vous connectant via la psql CLI.

Il semble que vous définissiez heroku dbnamesur quelque chose appelé Namepgadmin. Cela semble être le "nom de connexion" pour ce que vous créez là (quelque chose d'arbitraire pour y faire référence plus tard), mais n'y a-t-il pas un endroit où vous pouvez définir le nom de la base de données réelle, afin qu'il ne soit pas défini par défaut postgres?

Je ne suis pas un utilisateur de pgadmin, mais je recherche simplement les documents trouvés [1] qui spécifient ce qui suit:

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

Pourriez-vous essayer cela?

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

hgmnz
la source
1

Exécutez la commande suivante pour obtenir les informations d'identification de la base de données de Heroku:

heroku pg:credentials DATABASE_URL

Ensuite, vous pouvez utiliser un outil graphique comme PG Commander ou PGAdmin pour vous connecter à la base de données.

hexinpeter
la source