Do not speak Portuguese? Translate this site with Google or Bing Translator
Habilitando o Acesso Remoto no PostgreSQL

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,

 

 


3

Share

Donate to Site


About Author

Renato

Developer

Add a Comment
Comments 0 Comments

No comments yet! Be the first to comment

Blog Search


Categories

OUTROS (16) Variados (109) PHP (133) Laravel (171) Black Hat (3) front-end (29) linux (114) postgresql (39) Docker (28) rest (5) soap (1) webservice (6) October (1) CMS (2) node (7) backend (13) ubuntu (56) devops (25) nodejs (5) npm (3) nvm (1) git (8) firefox (1) react (7) reactnative (5) collections (1) javascript (7) reactjs (8) yarn (0) adb (1) Solid (2) blade (3) models (1) controllers (0) log (1) html (2) hardware (3) aws (14) Transcribe (2) transcription (1) google (4) ibm (1) nuance (1) PHP Swoole (5) mysql (31) macox (4) flutter (1) symfony (1) cor (1) colors (2) homeOffice (2) jobs (3) imagick (2) ec2 (1) sw (1) websocket (2) markdown (1) ckeditor (1) tecnologia (14) faceapp (1) eloquent (14) query (4) sql (40) ddd (3) nginx (9) apache (4) certbot (1) lets-encrypt (3) debian (12) liquid (1) magento (2) ruby (1) LETSENCRYPT (1) Fibonacci (1) wine (1) transaction (1) pendrive (1) boot (1) usb (1) prf (1) policia (2) federal (1) lucena (1) mongodb (4) paypal (1) payment (1) zend (1) vim (4) ciencia (6) js (1) nosql (1) java (1) JasperReports (1) phpjasper (1) covid19 (1) saude (1) athena (1) cinnamon (1) phpunit (2) binaural (1) mysqli (3) database (42) windows (6) vala (1) json (2) oracle (1) mariadb (4) dev (12) webdev (24) s3 (4) storage (1) kitematic (1) gnome (2) web (2) intel (3) piada (1) cron (2) dba (18) lumen (1) ffmpeg (2) android (2) aplicativo (1) fedora (2) shell (4) bash (3) script (3) lider (1) htm (1) csv (1) dropbox (1) db (3) combustivel (2) haru (1) presenter (1) gasolina (1) MeioAmbiente (1) Grunt (1) biologia (1) programming (22) performance (3) brain (1) smartphones (1) telefonia (1) privacidade (1) opensource (3) microg (1) iode (1) ssh (3) zsh (2) terminal (3) dracula (1) spaceship (1) mac (2) idiomas (1) laptop (2) developer (37) api (5) data (1) matematica (1) seguranca (2) 100DaysOfCode (9) hotfix (1) documentation (1) laravelphp (10) RabbitMQ (3) Elasticsearch (1) redis (2) Raspberry (4) Padrao de design (4) JQuery (1) angularjs (4) Dicas (43) Kubernetes (3) vscode (2) backup (1) angular (3) servers (2) pipelines (1) AppSec (1) DevSecOps (4) rust (1) RustLang (1) Mozilla (1) algoritimo (1) sqlite (1) Passport (2) jwt (5) security (2) translate (1) kube (2) iot (1) politica (2) bolsonaro (1) flow (1) podcast (1) Brasil (1) containers (3) traefik (1) networking (1) host (1) POO (2) microservices (2) bug (1) cqrs (1) arquitetura (3) Architecture (4) sail (3) militar (1) artigo (1) economia (1) forcas armadas (1) ffaa (1) autenticacao (2) autorizacao (2) authentication (4) authorization (3) NoCookies (1) wsl (4) memcached (1) macos (2) unix (2) kali-linux (1) linux-tools (5) apple (1) noticias (2) composer (1) rancher (1) k8s (1) escopos (1) orm (1) jenkins (4) github (5) gitlab (3) queue (1) Passwordless (1) sonarqube (1) phpswoole (1) laraveloctane (1) Swoole (1) Swoole (1) octane (1) Structurizr (1) Diagramas (1) c4 (1) c4-models (1) compactar (1) compression (1) messaging (1) restfull (1) eventdrive (1) services (1) http (1) Monolith (1) microservice (1) historia (1) educacao (1) cavalotroia (1) OOD (0) odd (1) chatgpt (1) openai (3) vicuna (1) llama (1) gpt (1) transformers (1) pytorch (1) tensorflow (1) akitando (1) ia (1) nvidia (1) agi (1) guard (1) multiple_authen (2) rpi (1) auth (1) auth (1) livros (2) ElonMusk (2) Oh My Zsh (1) Manjaro (1) BigLinux (2) ArchLinux (1) Migration (1) Error (1) Monitor (1) Filament (1) LaravelFilament (1) replication (1) phpfpm (1) cache (1) vpn (1) l2tp (1) zorin-os (1) optimization (1) scheduling (1) monitoring (2) linkedin (1) community (1) inteligencia-artificial (2) wsl2 (1) maps (1) API_KEY_GOOGLE_MAPS (1) repmgr (1) altadisponibilidade (1) banco (1) modelagemdedados (1) inteligenciadedados (4) governancadedados (1) bancodedados (2) Observability (1) picpay (1) ecommerce (1) Curisidades (1) Samurai (1) KubeCon (1) GitOps (1) Axios (1) Fetch (1) Deepin (1) vue (4) nuxt (1) PKCE (1) Oauth2 (2) webhook (1) TypeScript (1) tailwind (1) gource (2)

New Articles



Get Latest Updates by Email