Como se conectar a um banco de dados PostgreSQL remoto no Ubuntu usando o pgAdmin3?

22

Estou tentando configurar um banco de dados PostgreSQL em uma máquina Ubuntu. Gostaria de poder acessá-lo usando o pgAdmin3 de uma máquina remota. Como faço para configurar isso?

Instalei o banco de dados PostgreSQL no Ubuntu usando:

sudo apt-get install postgresql

No meu /etc/postgresql/9.1/main/pg_hba.conftenho esta linha:

host    all    all    all    password

portanto, ele deve aceitar conexões de todos os endereços IPv4 e as senhas devem ser enviadas em texto não criptografado (isso é por razões de desenvolvimento).

Se eu executar este comando para ver quais serviços estão sendo executados:

sudo netstat -tulpn

Eu posso ver essas linhas, que mostram que o PostgreSQL está aceitando conexões na porta padrão:

tcp    0    0    127.0.0.1:5432    0.0.0.0:*    LISTEN
3561/postgres

Quando tento conectar-me a este servidor PostgreSQL a partir de um computador remoto na mesma rede local, recebo esta mensagem de erro:

O servidor não escuta

O servidor não aceita conexões: a biblioteca de conexões relata

não foi possível conectar ao servidor: Conexão recusada O servidor está executando no host "10.0.1.7" e aceitando conexões TCP / IP na porta 5432?

Eu usei postgrescomo nome de usuário e sem senha. Mas eu também tentei com postgrescomo senha. No servidor local, posso fazer login usando:

sudo -u postgres psql postgres

Como posso me conectar a um banco de dados PostgreSQL em execução no Ubuntu a partir de uma máquina remota usando o pgAdmin3?

Jonas
fonte

Respostas:

25

A linha no seu relatório netstat mostra que o banco de dados está apenas ouvindo no localhost: 5432 (127.0.0.1) para conexões TCP de entrada.

Proto Recv-Q Send-Q Local Address   Foreign Address  State   PID/Program name
tcp        0      0 127.0.0.1:5432  0.0.0.0:*        LISTEN  3561/postgres

Portanto, ele só pode aceitar conexões tcp locais, independentemente de quais permissões você especificou no pg_hba.conf. O pg_hba.conf especifica apenas as conexões permitidas, mas não especifica quais interfaces o seu serviço escutará.

Os endereços nos quais o servidor ouve são especificados com o listen_addresses GUC no postgresql.conf . Se você deseja que o servidor escute conexões remotas, especifique o (s) IP (s) em que deseja escutar ou *escutar em todas as interfaces disponíveis no host.

Para que seu servidor postgresql escute em todas as interfaces do host, você deve ter a seguinte linha no postgresql.conf:

listen_addresses = '*'
dbenhur
fonte
mas eu já especifiquei allnopg_hba.conf arquivo ... então ele deve aceitar conexões de todos os endereços IP.
Jonas
Talvez eu pudesse ter dito isso mais claramente. O pg_hba não especifica em que o banco de dados ouve, apenas quais conexões de protocolo / db / user / remote-addr são permitidas.
dbenhur
Ok, então como faço para corrigir isso? Você tem alguma sugestão?
Jonas
1
você o corrige colocando uma linha listen_addresses = '*'no postgresql.conf e reiniciando o servidor.
dbenhur
Obrigado, isso resolveu este problema. Agora eu só tenho problemas com a senha padrão :(
Jonas