Tengo problemas para conectarme a mi base de datos PostgreSQL desde una fuente en línea.
PostgreSQL parece estar configurado bien, se ejecuta en su puerto predeterminado 5432 y postgresql.conf tiene la siguiente línea
listen_addresses = '*'
Y el pg_hba.conf tiene lo siguiente
host dbname usname all md5
Puedo conectarme a la base de datos PostgreSQL desde una máquina diferente usando las siguientes credenciales en pgadmin
Name local
Host 192.xx.xx.xx
Port 5432
Maintenance DB dbname
Username usname
Password psword
Usando estos puedo conectarme perfectamente, parece funcionar bien.
Luego reenvié el puerto 192.xx.xx.xx:5432 en el enrutador ADSL y lo verifiqué usando la dirección IP pública 197.xx.xx.xx (visible para la IP de Internet). http://www.canyouseeme.org/ Donde puedo ver, el puerto se reenvió correctamente.
Deshabilité SELinux y también deshabilité el firewall temporalmente.
Sin embargo, cuando intento conectarme usando
Name online
Host 197.xx.xx.xx
Port 5432
Maintenance DB dbname
Username usname
Password psword
Recibo el mensaje de error "El servidor no escucha".
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 qué es esto? ¿Necesito agregar un paso adicional para que acepte conexiones a través del reenvío de puertos?
Respuesta1
all
no es válido en el campo CIDR de una host
línea en pg_hba.conf
.
De los comentarios en el pg_hba.conf
archivo predeterminado:
# host MÉTODO DE DIRECCIÓN CIDR DEL USUARIO DE LA BASE DE DATOS [OPCIÓN]
y
CIDR-ADDRESS especifica el conjunto de hosts con los que coincide el registro. Se compone de una dirección IP y una máscara CIDR que es un número entero (entre 0 y 32 (IPv4) o 128 (IPv6) inclusive) que especifica el número de bits significativos de la máscara. Alternativamente, puede escribir una dirección IP y una máscara de red en columnas separadas para especificar el conjunto de hosts.
Pruebe esto en su lugar:
host dbname usname 197.xx.xx.xx/32 md5
eso permitirá conexiones a dbname desde usname solo desde el host remoto 197.xx.xx.xx
Si desea permitir toda la subred 197.xx.xx /24, utilice:
host dbname usname 197.xx.xx.0/24 md5