Conectando o pgAdmin3 ao Postgres no Heroku


9

Estou executando um banco de dados Heroku Postgres (banco de dados ) associado a um aplicativo Django. Os documentos que se referem ao complemento estão aqui . Eu pensei que essa seria uma pergunta interessante para a comunidade, porque o Heroku alertou seus usuários hoje que ele estará migrando tudo do complemento de banco de dados compartilhado que costumava ser o padrão.

Estou tendo problemas para conectar o pgAdmin3 ao banco de dados.

Conforme as instruções no link acima, pego as credenciais do banco de dados com o seguinte comando:

$ heroku pg:credentials HEROKU_POSTGRESQL_OLIVE

Estou usando uma instalação homebrew do Postgresql no Mac OSX.

Enquanto isso, eu tenho:

  • ativei o SSL no meu pg_postgresql.conf;
  • adicionou a configuração: listen_addresses = '*'
  • e acrescentou host all all 0.0.0.0/0 md5
  • e reiniciei meu servidor postgres.

Então eu vou para pgAdmin3 e selecione File > Add Server.

Entro as credenciais fornecidas pelo Heroku da seguinte forma (primeiro é o nome da credencial Heroku, depois o nome do campo pgAdmin):

Na guia "Propriedades":

  • dbname em Nome;
  • hospedar no host;
  • porta para porta;
  • Deixo o campo pgAdmin para "Banco de Dados de Manutenção" em branco;
  • usuário no nome de usuário;
  • senha em senha;

Na guia SSL:

  • No campo SSL, seleciono "exigir" (conforme instruído por Heroku).

Apertei enter e o pgAdmin pensa e lança um erro da seguinte maneira:

An error has occurred:

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

Não tenho certeza do que fazer nesse ponto. Gostaria de receber qualquer indicação.


pgadmin.org/docs/1.8/connect.html diz: 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’- e é com isso que o pgAdmin tentou se conectar. Forneça a senha do postgresusuário.
Dezso

Respostas:


6

Obrigado a @araqnid no Stack Overflow pela resposta aqui .

Verbatim citado de lá:

Abra as "Propriedades" do servidor Heroku no pgAdminIII e altere o valor "Maintenance DB" para ser o nome do banco de dados ao qual você deseja se conectar. A configuração padrão é adequada para os DBAs e colaboradores que podem se conectar a qualquer banco de dados no servidor, mas aparentemente isso não é verdade no seu caso.

Isso funcionou para mim!


mas isso abriu as 1368 bases de dados. Mesmo que eu tenha adicionado Manutenção DB como o meu nome db
Sunil Garg

3

FATAL: permission denied for database "postgres"indica que está tentando se conectar ao banco de dados do postgres. Na verdade, não concedemos esses privilégios. Você pode se conectar ao seu próprio banco de dados, isso deve ser bom. Você pode provar isso conectando-se através da CLI do psql.

Parece que você está configurando heroku's dbnamepara algo chamado Namepgadmin. Esse parece ser o "nome da conexão" para o que você está criando lá (algo arbitrário para se referir a ele mais tarde), mas não existe um local onde você possa definir o nome do banco de dados real, para que ele não seja o padrão postgres?

Eu não sou um usuário pgadmin, mas apenas pesquisando documentos encontrados [1] que especificam o seguinte:

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

Você poderia tentar isso?

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


1

Execute o seguinte comando para obter as credenciais do banco de dados do Heroku:

heroku pg:credentials DATABASE_URL

Em seguida, você pode usar uma ferramenta GUI como PG Commander ou PGAdmin para conectar-se ao banco de dados.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.