Eu tenho meu banco de dados PostgresSQL no meu laptop Ubuntu 18.10 e quero acessar o banco de dados do meu laptop na minha área de trabalho com Windows 10 PostgreSQL porque estou aprendendo a usar o Power BI da Microsoft e o Power BI está disponível apenas no Windows.
Assim, editei meu arquivo postgresql.conf da seguinte forma:
listen_addresses = 'localhost,my_public_ip_address,my_local_ip_address'
Assim, editei meu arquivo pg_hba.conf da seguinte maneira (adicionando essas linhas bem no final do arquivo):
host all all my_local_ip_address md5
host all all my_public_ip_address md5
Depois disso, eu corro:
sudo /etc/init.d/postgresql restart
sudo pg_lsclusters
O serviço postgresql reinicia inacreditavelmente rápido, sugerindo um problema e relatórios lsclusters:
Ver Cluster Port Status Owner Data directory Log file
11 main 5432 down postgres /var/lib/postgresql/11/main /var/log/postgresql/postgresql-11-main.log
Por algum motivo, editar pg_hba.conf e postgresql.conf trava meu cluster e qualquer tentativa de fazer login com "psql postgres" ou "psql -h localhost -d my_database -U my_user_name" resulta em:
me@me-computer_name:~$ psql postgres
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
Assim que restauro meus backups .conf originais com as alterações revertidas e reinicio o postgresql 11 novamente, tudo funciona perfeitamente bem. Por que editar os dois arquivos .conf trava meu cliente e como posso habilitar meu cliente para permitir conexões de outros computadores perto de minha casa (e APENAS minha casa) através do meu ip público/local?
Quando uma instância do Postgres não reinicia, você deve sempre olhar primeiro para o arquivo de log mencionado por
pg_lsclusters
(/var/log/postgresql/postgresql-11-main.log
). Ele terá a mensagem de erro informando por que o servidor fecha imediatamente na reinicialização.Com base nas alterações mencionadas, é provável que ele não consiga ouvir um dos endereços que você mencionou em
listen_addresses
. Esses endereços devem corresponder às interfaces de rede instaladas no servidor, não aos endereços remotos dos dispositivos que devem se conectar. Essas interfaces no servidor podem ser listadas com oip a list
comando.Em termos de origem/destino, isso é o oposto de
pg_hba.conf
, que pode listar os endereços remotos (remotos do ponto de vista do servidor) que têm permissão para se conectar (mais geralmentelocalhost
para permitir conexões locais).