Liberando conexões remotas ao PostgreSQL

Veremos como como liberar conexões externas ao servidor PostgreSQL configurando os arquivos postgresql.conf e o pg_hba.conf. Por padrão o PostgreSQL vem configurado para receber apenas conexões locais (localhost ou 127.0.0.1). Para conectar de outra máquina na rede é preciso alterar algumas configurações básicas em 2 arquivos.

Por Programação 6 comentários
Liberando conexões remotas ao PostgreSQL

Neste tópico vou explicar como liberar conexões remotas pela rede a uma base de dados PostgreSQL.

Por padrão o PostgreSQL vem configurado para receber apenas conexões locais (localhost ou 127.0.0.1). Para conectar de outra máquina na rede é preciso alterar algumas configurações básicas em 2 arquivos.

São eles: postgresql.conf e pg_hba.conf.

No postgresql.conf vamos editar a seguinte linha:

#listen_addresses = "localhost" # what IP address(es) to listen on

Como em todo arquivo de configuração em programas linux, o # na frente da linha significa um comentário e com isso desabilita o parâmetro seguinte, tomando seu valor default, que no caso é localhost. Descomente essa linha e substitua seu valor por *. Assim seu PostgreSQL estará apto a ouvir conexões de qualquer IP. Então essa linha ficará da seguinte forma:

listen_addresses = "*" # what IP address(es) to listen on

Isso não quer dizer que ele estará aberto para qualquer IP da rede. É possível criar políticas de acesso através de outro arquivo que falaremos a seguir.

Liberando as conexões no arquivo pg_hba.conf:

Este é o arquivo do Postgre responsável pela liberação de usuários, hosts e bancos de dados. Nele é possível dizer qual usuário de qual ip (ou rede) conectará a qual banco. É possível liberar qualquer usuário para conectar a qualquer banco, mas esta é uma regra cautelosa a ser seguida pois pode comprometer a segurança do seu servidor de bases de dados.

Por padrão o arquivo vem com a seguinte configuração:

# "local" is for Unix domain socket connections only
local all all trust

# IPv4 local connections:
host all all 127.0.0.1/32 trust

# IPv6 local connections:
host all all ::1/128 trust

Pode haver alguma variação das configurações padrões de acordo com a versão utilizada, mas geralmente é algo que represente essas informações. Basicamente elas querem dizer que todas as conexões locais podem ser realizadas por qualquer usuário do banco a qualquer banco de dados.

Para liberar o acesso remoto basta criar uma nova regra seguindo o seguinte padrão:

host all all 0.0.0.0/0 trust


Com essa regra qualquer usuário de qualquer IP poderá se conectar a qualquer database.

Importante: O parâmetro trust quer dizer que não será solicitada qualquer senha para conectar ao banco de dados. Então, qualquer pessoa com acesso à sua rede poderá se conectar ao servidor PostgreSQL sem nenhuma restrição. Se a sua rede for restrita como uma turma de um curso ou um ambiente de desenvolvimento interno de empresa não há riscos, porém, é necessário possuir um ambiente de rede interno isolado.

Este parâmetro é útil quando você ainda não se conectou ao banco para criar uma senha de acesso ao usuário postgres (do banco e não do sistema operacional). Então você se conecta e reseta a senha do usuário. Logo em seguida, altere o parâmetro para md5. Assim, uma senha será solicitada ao tentar conectar-se ao servidor Postgre.

Assim ficará a regra de liberação:

host all all 0.0.0.0/0 md5


É possível também liberar o acesso apenas a uma rede específica:

host all all 192.168.0.0/32 md5

Ou também, informar qual usuário poderá conectar:

host all usuariodobanco 192.168.0.0/32 md5

Também informar qual o banco de dados a ser conectado por este usuário:

host bancodedados usuariodobanco 192.168.0.0/32 md5

Na regra acima, o usuário usuariodobanco poderá conectar-se apenas ao banco bancodedados apenas se estiver dentro da rede 192.168.0.0.

Em breve escreverei outro post falando um pouco mais sobre as regras do pg_hba.conf.

Obrigado e espero que gostem!

Compartilhe com seus amigos:
Marcelo Santino
Marcelo Santino Trabalha como Administrador de Bancos de dados Oracle, SQL Server, PostgreSQL e MySQL.
FACEBOOK // TWITTER: @msantino
Quer conversar com o(a) Marcelo, comente:
Carregar comentários
Últimas notícias de Programação
  • Google usa Mulher-Maravilha para ajudar meninas a programar

    Google usa Mulher-Maravilha para ajudar meninas a programar

    Meninas ganham um incentivo extra na hora de aprender a programar, a Mulher-Maravilha.

  • Criando um cadastro de usuário em Java

    Criando um cadastro de usuário em Java

    O objetivo deste artigo é desenvolver uma aplicação em JSE (Java Standard Edition) de inserção de dados utilizando alguns padrões de projeto.

  • Quer aprender PHP? Saiba mais

    Quer aprender PHP? Saiba mais

    Chegou o tão aguardado curso online de PHP do Oficina da Net. Você não pode perder. PHP é uma das linguagens mais usadas no mundo. Os conteúdos que vou mostrar no curso, são exatamente o que você precisa saber para iniciar sua carreira como programador.

  • Formulário de contato em php

    Formulário de contato em php

    Guia do PHP: Aprenda a fazer um formulário em PHP que envia via SMTP autenticado o e-mail para um destinatário.

  • Como fazer um GIF?

    Como fazer um GIF?

    Aprenda a criar um GIF animado de vídeos. Descubra como criar os GIFs, imagens animadas que você vê em na internet.

  • O que priorizar na hora de escolher o hosting para seu site?

    O que priorizar na hora de escolher o hosting para seu site?

    Com o crescimento das ofertas na web, saiba o que você deve levar em consideração na hora de escolher a melhor empresa de hosting para seu empreendimento

  • O que preciso fazer para criar um aplicativo?

    O que preciso fazer para criar um aplicativo?

    Temos visto que desenvolver aplicativos que visam o mercado mobile pode ser mais que uma alternativa rentável, pode colocá-lo no topo, deixá-lo rico. Mas nem tudo são flores, e o aspirante a desenvolvedor de app precisa seguir algumas regras.

  • WEBINAR 3.9

    WEBINAR 3.9

    Venha para o Maker e descubra como tornar o seu negócio mais competitivo.