Estou tendo problemas para me conectar ao meu banco de dados PostgreSQL de uma fonte online.
O PostgreSQL parece estar configurado corretamente, está sendo executado na porta padrão 5432 e o postgresql.conf tem a seguinte linha
listen_addresses = '*'
E o pg_hba.conf tem o seguinte
host dbname usname all md5
Posso me conectar ao banco de dados PostgreSQL de uma máquina diferente usando as seguintes credenciais no pgadmin
Name local
Host 192.xx.xx.xx
Port 5432
Maintenance DB dbname
Username usname
Password psword
Usando estes, posso conectar perfeitamente e parece funcionar bem.
Então encaminhei a porta 192.xx.xx.xx:5432 no roteador ADSL e verifiquei usando o endereço IP público 197.xx.xx.xx (visível para o IP da internet) http://www.canyouseeme.org/ Onde posso ver que a porta foi encaminhada ok.
Desativei o SELinux e também desativei o firewall temporariamente.
No entanto, quando tento me conectar usando
Name online
Host 197.xx.xx.xx
Port 5432
Maintenance DB dbname
Username usname
Password psword
Recebo que o servidor não escuta mensagem de erro
could not connect to server: Connection refused (0x0000274D/10061) Is the server running on host "197.xx.xx.xx" and accepting TCP/IP connections on port 5432?
Por que é isso? Preciso adicionar uma etapa extra para aceitar conexões por meio de encaminhamento de porta?
Responder1
all
não é válido no campo CIDR de uma host
linha no arquivo pg_hba.conf
.
Dos comentários no pg_hba.conf
próprio arquivo padrão:
# host MÉTODO DE ENDEREÇO CIDR DO USUÁRIO DO BANCO DE DADOS [OPÇÃO]
e
CIDR-ADDRESS especifica o conjunto de hosts aos quais o registro corresponde. É composto por um endereço IP e uma máscara CIDR que é um número inteiro (entre 0 e 32 (IPv4) ou 128 (IPv6) inclusive) que especifica o número de bits significativos na máscara. Alternativamente, você pode escrever um endereço IP e uma máscara de rede em colunas separadas para especificar o conjunto de hosts.
Em vez disso, tente isto:
host dbname usname 197.xx.xx.xx/32 md5
isso permitirá conexões com dbname de usname apenas do host remoto 197.xx.xx.xx
Se você quiser permitir toda a sub-rede 197.xx.xx /24, use:
host dbname usname 197.xx.xx.0/24 md5