Conectando pgAdmin3 a Postgres en Heroku


9

Estoy ejecutando una base de datos Heroku Postgres ( Base de datos ) en asociación con una aplicación Django. Los documentos que hacen referencia al complemento están aquí . Pensé que esta sería una pregunta que valía la pena para la comunidad porque Heroku alertó hoy a sus usuarios de que migrará todo del complemento de base de datos compartido que solía ser el predeterminado.

Tengo problemas para conectar pgAdmin3 a la base de datos.

Según las instrucciones en el enlace anterior, tomo las credenciales de la base de datos con el siguiente comando:

$ heroku pg:credentials HEROKU_POSTGRESQL_OLIVE

Estoy usando una instalación homebrew de Postgresql en Mac OSX.

Mientras tanto, tengo:

  • encendí SSL en mi pg_postgresql.conf;
  • agregó la configuración: listen_addresses = '*'
  • y agregado host all all 0.0.0.0/0 md5
  • y reinicié mi servidor postgres.

Luego voy a pgAdmin3 y selecciono File > Add Server.

Ingreso las credenciales proporcionadas por Heroku de la siguiente manera (primero es el nombre de credencial de Heroku, segundo es el nombre del campo pgAdmin):

En la pestaña "Propiedades":

  • dbname en Nombre;
  • host en Host;
  • puerto en puerto;
  • Dejo en blanco el campo pgAdmin para "Base de datos de mantenimiento";
  • usuario en nombre de usuario;
  • contraseña en contraseña;

En la pestaña SSL:

  • En el campo de SSL, selecciono "requerir" (según las instrucciones de Heroku).

Presioné enter y pgAdmin piensa, luego arroja un error de la siguiente manera:

An error has occurred:

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

No estoy seguro de qué hacer en este momento. Agradecería cualquier puntero.


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’- y eso es a lo que pgAdmin intentó conectarse. Proporcione la contraseña del postgresusuario.
dezso

Respuestas:


6

Gracias a @araqnid en Stack Overflow por la respuesta aquí .

Verbatim citado a partir de ahí:

Abra las "Propiedades" del servidor Heroku en pgAdminIII y cambie el valor "Mantenimiento DB" para que sea el nombre de la base de datos a la que desea conectarse. La configuración predeterminada es adecuada para DBA y otros que pueden conectarse a cualquier base de datos en el servidor, pero aparentemente eso no es cierto en su caso.

¡Esto funcionó para mí!


pero esto abrió las bases de datos 1368. incluso si he agregado Maintenance DB como mi nombre de base de datos
Sunil Garg

3

FATAL: permission denied for database "postgres"indica que está intentando conectarse a la base de datos postgres. De hecho, no otorgamos tales privilegios. Sin embargo, puede conectarse a su propia base de datos, eso debería estar bien. Puede probarlo conectándose a través de psql CLI.

Parece que está configurando heroku's dbnamea algo llamado Nameen pgadmin. Ese parece ser el "nombre de conexión" para lo que está creando allí (algo arbitrario para referirse a él más adelante), pero ¿no hay un lugar donde pueda establecer el nombre real de la base de datos, para que no se establezca de manera predeterminada postgres?

No soy un usuario de pgadmin, sino que solo busco documentos encontrados [1] que especifican lo siguiente:

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

¿Podrías intentar eso?

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


1

Ejecute el siguiente comando para obtener las credenciales de la base de datos de Heroku:

heroku pg:credentials DATABASE_URL

Luego puede usar una herramienta GUI como PG Commander o PGAdmin para conectarse a la base de datos.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.