PgAdmin III - Como conectar-se ao banco de dados quando a senha está vazia?

21

Instalei o PostgreSQL 9.1 no meu PC (Win 7). Eu tenho um pequeno aplicativo Java que se conecta com êxito com login=sae password="". A conexão funciona.

No entanto, é recusado pelo próprio PgAdmin III. Eu recebo:

Error connecting to the server: fe_sendauth: no password supplied

Como me conecto ao meu banco de dados no PgAdmin III com uma senha vazia?

EDITAR

Este é apenas um teste, não um código de produção.

Jérôme Verstrynge
fonte
Não sei ao certo, mas é fácil imaginar que o PgAdmin não suporta isso.
Peter Eisentraut
seu aplicativo Java está no mesmo cliente que o pgAdmin?
Jack Douglas
pergunta semelhante
Jack Douglas

Respostas:

10

Posso conectar-me à minha instância do postgres no pgAdmin III sem uma senha para qualquer usuário, incluindo superusuários como postgres.

Como você está se conectando bem a partir de outro cliente, não há motivo para que você não consiga se conectar a partir do pgAdmin se eles estiverem na mesma estação de trabalho - a menos que alguma regra de firewall no próprio cliente permita um programa, mas não outro.

Se o problema for específico para este cliente, pode ser necessário alterar um ou mais dos seguintes:

  • pg_hba.conf
host em todos os 192.168.0.nnn / 32 trust
  • postgresql.conf
listen_addresses = '*'
  • o firewall no servidor postgres, por exemplo, iptables:
-A INPUT -s 192.168.0.nnn -m state --state NEW -j ACEITAR

Mas eu recomendo que você não faça nada disso. O manual diz o seguinte por um bom motivo:

A autenticação confiável é adequada apenas para conexões TCP / IP se você confiar em todos os usuários em todas as máquinas que têm permissão para se conectar ao servidor pelas linhas pg_hba.conf que especificam confiança. Raramente é razoável usar confiança para qualquer conexão TCP / IP que não seja a do host local (127.0.0.1).

Em vez disso, considere:

  • usando uma senha e identificação md5
  • porta de tunelamento 5432 sobre ssh
Jack Douglas
fonte
31

Encontrei esta resposta em outro lugar.

Se o seu banco de dados estiver no host local, tente deixar o campo do host em branco na conexão, em vez de usar "localhost" ou "127.0.0.1". Isso diz ao PgAdmin para conectar-se através do soquete unix local em vez do TCP.

Alex Jodidio
fonte
Vamos acrescentar que a pergunta original era sobre um sistema Windows.
Dez12
3
Ah, era exatamente isso. Deixando o host em branco funcionou.
basicdays
Você não pode deixar este campo em branco, é obrigatório.
Athlan
Parece que deixar o campo host em branco funcionará apenas se você tiver uma função na pg denominada como nome de usuário do sistema (no Linux). Caso contrário, acho que são necessários mapas do usuário.
a1an
Perfeito! Com uma nova instalação do postgresql e pgadmin, mudar pg_hba.confpara dizer em trustvez de peernesta linha - local all postgres truste deixar os campos host e senha em branco no pgadmin faz com que tudo funcione! Eu gostaria que o pgadmin adicionasse uma caixa de seleção para mudar para sockets, em vez desta interface difícil de descobrir.
Anupam Jain