Acesse remotamente o banco de dados postgresql


46

Preciso acessar um banco de dados postgresql de uma máquina remota em um VPS no DigitalOcean executando 12.10 e postgresql 9.1.

Como eu faço isso? Notei que a porta 5432 está fechada, como faço para abrir isso?


1
Siga as etapas mencionadas em javabypatel.blogspot.in/2015/07/… e altere o número da porta presente no arquivo postgresql.conf. após alterar a porta, reinicie o servidor PostgreSQL.
Jayesh

O URL postado por @Jayesh fez o truque. Siga as instruções e faça com que um dos meus computadores de desenvolvimento se conecte a outro (do Windows com pgAdmin4 ao Ubuntu 18.04 postgresql 10.9)
EAmez

Respostas:


78

Para abrir a porta 5432, edite /etc/postgresql/9.1/main/postgresql.confe altere

listen_addresses='localhost'

para

listen_addresses='*'

e reinicie seu DBMS

invoke-rc.d postgresql restart

agora você pode se conectar com

$ psql -h hostname -U username -d database

se você não conseguir se autenticar, precisará conceder ao seu usuário direitos de acesso ao seu banco de dados

Edite seu

/etc/postgresql/9.1/main/pg_hba.conf

e adicione

host all all all md5

(Isso é para um amplo acesso aberto. Para um controle mais rígido, consulte a documentação do pg_hba.conf e ajuste de acordo com suas necessidades).

Daqui em diante, você também precisará de uma recarga

invoke-rc.d postgresql reload

Não preciso mencionar que essa é uma configuração básica, agora você deve modificar o firewall e melhorar a segurança do seu DBMS.


4
Em particular, você deve ativar o SSL.
Craig Ringer

Okey, eu tentei isso, mas quando tento conectar usando o pgAdmin do meu computador, recebo "O servidor não está escutando". Eu adicionei ao iptables e, quando executo o iptables -L, o seguinte mostra: ACEITAR TCP - em qualquer lugar e em qualquer lugar TCP: - Postgresql Ao verificar o IP e o PORT neste site ( yougetsignal.com/tools/open-ports ), ele diz o seguinte: a porta está fechada
Øyvind

2
o servidor está ouvindo? Verifique comnetstat -nlt|grep :5432

1
Gostaria de inserir a linha do host de uma maneira mais rigorosa:host <database> <user> <remote_client_IPaddress>/24 md5
gc5 25/02

Para o Postgresql versão 9.5, pode ser necessário reiniciar o servidor antes que os listen_addresses entrem em vigor.
precisa saber é o seguinte

26

Isso não funciona mais, se é que alguma vez funcionou:

hospedar tudo * md5

As linhas corretas possíveis para isso são:

hospedar todos os 0.0.0.0/0 md5 # ipv4 range

hospedar tudo :: intervalo 0/0 md5 # ipv6

hospedar tudo tudo md5 #all ip

Fonte


4
Isso definitivamente fez o truque. A resposta acima definitivamente não funcionou.
Mike

Por favor, @Mike expresse o que é correto: host all all all md5funcionará bem? Isso está correto? algum problema de segurança?
Peter Krauss

@ Peterkrauss Sim, hospedar todos todos MD5 funcionou para mim. Problema de segurança? Claro que sim, mas o que eu estava fazendo estava bem. (Rede interna)
Mike

3

Para a mensagem "servidor não escutando", o que aconteceu comigo foi que eu não apago o # no arquivo postgresql.conf, quero dizer:

# listen_addresses = 'localhost'

para:

listen_addresses = '*'

(Desculpe pelo meu Inglês).


0

A resposta mais votada e aceita tem sérias impulsões de segurança. Este método está desativado por padrão por boas razões.

Melhor usar o encaminhamento de porta local com ssh:

ssh -L local_port:localhost:foreign_port user@server

Inicie o encaminhamento de porta:

ssh -L 5432:localhost:5432 user@your-server.com
#or
ssh -L 5432:127.0.0.1:5432 user@your-server.com

(Altere as portas locais e estrangeiras para ajustar sua configuração).

Em seguida, você pode conectar-se diretamente ao banco de dados no seu computador local:

psql -U db_user -p local_port -l
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.