Implementar PostgreSQL en servidor Windows
· 3 min read
Puede parecer ilógico hacer esta entrada, pero entre la fragilidad de la memoria y algunos pasos adicionales realizados en la instalación ameritan estas líneas. El escenario: Un servidor Windows 2019 sin acceso a Internet y con sus actualizaciones al día vía WSUS, nada extraño ¿o me equivoco? El punto es que nos enfrentábamos a una conexión vía VPN que sólo tiene abierto algunos puertos conocidos y claramente el puerto de Pg por defecto no es de aquellos (5432)... Así comenzó la triste historia jajaja
- Descargar el instalador de Pg en su versión actual (17 al momento de escribir esta entrada).
- Transferir el instalador al servidor, RDP/SFTP/Etc.
- Determinar la unidad donde se instalará Pg, en nuestro caso teníamos 7 discos a disposición y todos estaban hasta más arriba del paracaídas con cosas así es que escogimos el que tenía más espacio disponible. Para efectos pedagógicos, le llamaremos U:\
- Se instala normalmente Pg, con las opciones por defecto. Atención a las credenciales ingresadas, es común poner cualquier cosa y luego olvidarlas
- Entramos a Pg Admin para confirmar la correcta instalación.
- Ahora, intentamos ingresar desde nuestro equipo, vía VPN a Pg utilizando DBeaver CE. El primer problema es que Pg tiene por política definir las IP remotas en un archivo para aceptarlas y hacer un mapeo entre la IP, la BD y el usuario lo cual es fantástico pero complejo por el detalle que las IP's que accederán serían dinámicas.
- Acá el primer trucazo (lo usamos sólo porque hay una VPN y muchísimos servicios de seguridad perimetral, IDS, Antimalware y otras yerbas)... Editamos el archivo pg_hba.conf agregando la siguiente línea al final del archivo host all all 0.0.0.0/0 md5, esto en definitiva acepta cualquier IP a cualquier usuario en cualquier base de datos, obviamente los usuarios pasan el tema de autentificación y autorización para acceder a los recursos de Pg.
- Ahora editamos el archivo postgresql.conf y añadimos lo siguiente listen_addresses = '*' con ello nos aseguramos que Pg escuche a todo el mundo mundial.
- Reiniciamos el servicio y no pasó nada! pero ahora el tema era que la conexión caía por Timeout, Así es que decidimos cambiar de puerto y para ello volvimos al archivo y modificamos el parámetro port = 5432 por el puerto que utilizamos (un puerto conocido, tan conocido que no estaba bloqueado por el sistema de seguridad y milagrosamente no estaba siendo utilizado en ese servidor).
- Reiniciamos varias veces el servicio de Pg y nada pasaba!
- Entramos localmente a Pg Admin y ejecutamos el siguiente SQL: SELECT pg_reload_conf()con ello, recargamos la configuración.
- Probamos la conexión remota y funcionó!
Dejo este paso a paso para la posterioridad y como el recuerdo de una jornada de trabajo de aquellas de grandes oportunidades y aprendizajes.
