Posted on: August 06, 2021 03:31 PM
Posted by: Renato
Views: 15812
Habilitando o Acesso Remoto no PostgreSQL
Esse é um assunto muito pertinente para quem trabalha com este banco no ambiente Web. Muitas vezes, por mais comodidade/praticidade, realizamos o acesso remoto do banco por meio de alguma IDE
Precisei da acesso remoto de um ec2 do postgresql na aws, adicionei a porta necessaria, mas mesmo assim temos que configurar o postgresql também.
Por padrão o Postgres não vem configurado para aceitar conexões externas, e para habilitá-las temos que editar dois arquivos de configuração: pg_hba.conf e postgresql.conf
Estou com o pressuposto que você está no ambiente Linux, e para editar os arquivos iremos utilizar o comando “vi” ou "vim" ou "mc".
Então, executando os comandos abaixo estaremos habilitando o Acesso Remoto no PostgreSQL:
Veja o comando abaixo onde iremos abrir um dos arquivos de configuração, e tenha atenção que este pode não ser o caminho exato onde seu arquivo esteja, dependo da versão do sistema operacional que você esteja utilizando, ou mesmo a distribuição (aqui estou utilizando o CentOS 6.0)
vi /var/lib/pgsql/data/pg_hba.conf
Pronto, agora você pode editar o arquivo, acrescente no final a seguinte linha:
host all all 0.0.0.0/0 md5
Nela estamos dizendo que todas (0.0.0.0/0) as conexões remotas (host) estão permitidas para todos os usuários! Cuidado! Eu sugiro que você coloque o seu IP para realizar as alterações e depois remova essa linha.
Alterando para um IP específico poderia ficar assim:
host all all 189.162.0.16/24 md5
Depois de adicionar a linha, saia do editor vi e salvando as alterações.
Agora vamos editar o segundo arquivo, mais fácil. Abra o arquivo postgresql.conf:
vi /var/lib/pgsql/data/postgresql.conf
Agora procure pela linha abaixo e remova o comentário (#), caso houver:
listen_addresses='localhost'
Troque por asterísco “*” para habilitar a conexão para todos ou coloque seu IP:
listen_addresses='189.162.0.16'
ou
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.
E uma última alteração, procure pela linha abaixo, e caso estiver comentada remova o comentário:
port = 5432
Se você estiver usando firewall, não se esqueça de permitir a porta 5432
ufw allow 5432/tcp
Pronto, agora seu PostgreSQL está configurado para aceitar conexões externas, dê o restart no processo dele e inicie seu trabalho!
service postgresql restart
For example:
CREATE DATABASE "meubanco"
WITH OWNER "postgres"
ENCODING 'UTF8'
LC_COLLATE = 'c.UTF-8'
LC_CTYPE = 'c.UTF-8';
- https://www.oficinadanet.com.br/artigo/2101/liberando_conexoes_remotas_ao_postgresql
Espero que ajude,
Donate to Site
Renato
Developer