Una vez que hemos instalado PostgreSQL, sea en ambiente Linux o en ambiente Windows (Windows 10 o Windows 11), es posible que surja la necesidad de permitir el acceso remoto a la base de datos.
En este artículo explicaremos paso por paso cómo configurar el Acceso Remoto PostgreSQL en los diferentes posibles escenarios en los que nos podríamos encontrar.
Cuando se ha instalado PostgreSQL, el acceso a la base de datos está disponible únicamente en modo local.
Esto significa que solo en el dispositivo que hace de servidor de datos es posible acceder a los mismos.
Si intentamos acceder a la base de datos desde otro pc en una intranet o desde una conexión remota a través de internet, debemos configurar la base de datos en modo que reciba/acepte accesos desde direcciones IP fuera de la local (localhost)
Para facilitar la configuración, elije el escenario en el que te encuentres en la siguiente sección.
INDICE
Configurar Acceso Remoto PostgreSQL en Windows 10
Luego de haber instalado PostgreSQL en Windows 10, abrimos el explorador de archivos y nos colocamos en la carpeta en donde se instaló PostgreSQL.
Por lo general se instala en la ruta:
C:\Program Files\PostgreSQL
En el caso ilustrado en la captura de pantalla anterior, notamos que contamos con una instalación de PostgreSQL versión 13.
Es posible que el dispositivo en el que estemos trabajando, se halla instalado una versión diversa, pero eso poco importa a fines de esta configuración.
Abrimos la carpeta por medio de un doble clic sobre el nombre de la versión.
Una vez dentro, individuamos la carpeta llamada «data» y accedemos. Debemos poder visualizar los archivos: pg_hba.conf y postgresql.conf
Configuración archivo pg_hba.conf
Procedemos a abrir el archivo pg_hba.conf con un editor de texto cualquiera. Una vez abierto, deslizamos hasta encontrar la sección: # IPv4 local connections
En esa sección, agregaremos una nueva línea con el siguiente contenido:
host all all 0.0.0.0/0 scram-sha-256
El archivo debe verse tal como se muestra en la siguiente captura de pantalla:
Si estás trabajando con una versión precedente de PostgreSQL, es posible que la línea contenga al final en vez de scram-sha-256 el valor md5.
En ese caso es suficiente que cambies el valor para que corresponda al mismo valor:
host all all 0.0.0.0/0 md5
Configuración archivo postgresql.conf
Tal como hicimos con el archivo pg_hba.conf, procedemos a abrir el archivo postgresql.conf con un editor de texto.
Deslizamos el contenido del archivo, hasta que encontremos la sección: # – Connection Settings –
En esta sección debemos asegurarnos que la línea que inicia con listen_addresses no esté comentada (símbolo # al inicio) y que como valor asignado tenga: ‘*’
El hecho que se encuentre el ‘*’ significa que la base de datos va a aceptar conexiones en entrada desde cualquier dirección IP que se la solicite.
Si queremos restringir el acceso remoto a una dirección IP específica, es suficiente escribir dentro de las comillas simples la dirección IP que vamos a permitir.
Si fuese el caso que hay mas direcciones IP individuales, se las debe escribir separadas por una coma (,).
Una vez realizados los cambios, hay que registrar las modificaciones, si se han hecho, del archivo.
Abrir Puerto en el Firewall
Ahora debemos asegurarnos que las conexiones en entrada no sean bloqueadas por el Firewall que tengamos instalado en el dispositivo que hace las veces de servidor de datos.
En el caso de la máquina virtual que estoy utilizando en el ejemplo, el Firewall activo es el que se instala junto con Windows 10 en forma predefinida.
Abrimos entonces la sección del Firewall de Windows 10, escribiendo la palabra firewall en la barra de búsqueda y haciendo clic en la aplicación Firewall de Windows Defender
Ahora utilizamos la sección derecha en donde encontramos la opción Nueva regla.
Hacemos clic en la opción Nueva regla y seguimos los siguientes pasos:
Dejamos la selección en TCP y en el segundo bloque elegimos Puertos locales específicos. Debemos escribir el puerto especificado en la instalación de PostgreSQL, si no hemos cambiado el puerto predeterminado, el valor debería ser 5432.
hacemos clic en Siguiente
Reinicio del Servicio PostgreSQL
El último paso que debemos dar es el del reinicio del servicio PostgreSQL para que la configuración que acabamos de realizar inicie a funcionar.
Para esto, abriremos los servicios de Windows escribiendo directamente en la barra de búsqueda la palabra servicios y haciendo clic en la aplicación Servicios que se nos muestra entre los resultados de la búsqueda.
En la aplicación servicios, individuamos el motor de la base de datos y entre las opciones que se muestran en la parte izquierda optamos por la que dice Reiniciar el servicio.
Configurar Acceso Remoto PostgreSQL en Windows 11
Luego de haber instalado PostgreSQL en Windows 11, abrimos el explorador de archivos y nos colocamos en la carpeta en donde se instaló PostgreSQL.
Por lo general se instala en la ruta:
C:\Program Files\PostgreSQL
En el caso ilustrado en la captura de pantalla anterior, notamos que contamos con una instalación de PostgreSQL versión 14.
Es posible que el dispositivo en el que estemos trabajando, halla una versión diversa, pero eso poco importa a fines de esta configuración.
Abrimos la carpeta por medio de un doble clic sobre el nombre de la versión.
Al interno de la carpeta, individuamos la carpeta llamada «data» y accedemos. debemos poder visualizar los archivos: pg_hba.conf y postgresql.conf
Configuración archivo pg_hba.conf
Procedemos a abrir el archivo pg_hba.conf con un editor de texto cualquiera.
Una vez abierto, deslizamos hasta encontrar la sección: # IPv4 local connections
En esa sección, agregaremos una nueva línea con el siguiente contenido:
host all all 0.0.0.0/0 scram-sha-256
El archivo debe verse tal como se muestra en la siguiente captura de pantalla:
Si estás trabajando con una versión precedente de PostgreSQL, es posible que la línea contenga al final en vez de scram-sha-256 el valor md5.
En ese caso es suficiente que cambies el valor para que corresponda al mismo valor:
host all all 0.0.0.0/0 md5
Configuración archivo postgresql.conf
Tal como hicimos con el archivo pg_hba.conf, procedemos a abrir el archivo postgresql.conf con un editor de texto.
Deslizamos el contenido del archivo, hasta que encontremos la sección: # – Connection Settings –
En esta sección debemos asegurarnos que la línea que inicia con listen_addresses no esté comentada (símbolo # al inicio) y que como valor asignada tenga: ‘*’
El hecho que se encuentre el ‘*’ significa que la base de datos va a aceptar conexiones en entrada desde cualquier dirección IP que se la solicite.
Si queremos restringir el acceso remoto a una dirección IP específica, es suficiente escribir dentro de las comillas simples la dirección IP que vamos a permitir.
Si fuese el caso que hay mas direcciones IP individuales, se las debe escribir separadas por una coma (,).
Una vez realizados los cambios, hay que registrar las modificaciones, si se han hecho, del archivo.
Abrir Puerto en el Firewall
Ahora debemos asegurarnos que las conexiones en entrada no sean bloqueadas por el Firewall que tengamos instalado en el dispositivo que hace las veces de servidor de datos.
En el caso de la máquina virtual que estoy utilizando en el ejemplo, el Firewall activo es el que se instala junto con Windows 11 en forma predefinida.
Abrimos entonces la sección del Firewall de Windows 11, escribiendo la palabra firewall en la barra de búsqueda y haciendo clic en la aplicación Firewall de Windows Defender
Ahora utilizamos la sección derecha en donde encontramos la opción Nueva regla.
Hacemos clic en la opción Nueva regla y seguimos los siguientes pasos:
Reinicio del Servicio PostgreSQL
El último paso que debemos dar es el del reinicio del servicio PostgreSQL para que la configuración que acabamos de realizar inicie a funcionar.
Para esto, abriremos los servicios de Windows escribiendo directamente en la barra de búsqueda la palabra servicios y haciendo clic en la aplicación Servicios que se nos muestra entre los resultados de la búsqueda.
En la aplicación servicios, individuamos el motor de la base de datos y entre las opciones que se muestran en la parte izquierda optamos por la que dice Reinicia el servicio.
Una vez que el servicio se ha reiniciado, ya estamos listos para realizar la prueba de que nuestra configuración fue hecha correctamente.
Podemos ir a la sección Probar el Acceso Remoto.
Configurar Acceso Remoto PostgreSQL en Linux
Si has instalado PostgreSQL en Linux, sea en modo gráfico que en modo texto, al igual que en las instalaciones de Windows, debemos acceder a los dos archivos de configuración que sirven para configurar acceso remoto Postgresql
En nuestro caso utilizaremos Linux UBUNTU Server 20.04 en modo texto.
Configuración del archivo pg_hba.conf
Utilizamos un editor de texto para abrir el archivo pg_hba.conf.
En el caso de nuestro ejemplo utilizaremos el editor nano.
Escribimos el comando:
sudo nano /etc/postgresql/12/main/pg_hba.conf
La ruta en donde se encuentran los archivos de configuración depende de qué versión de PostgreSQL hemos instalado. En el caso del ejemplo tenemos instalado la versión 12.
Una vez que se ha abierto el archivo, nos deslizamos con las flechas del teclado hasta la sección: Una vez abierto, deslizamos hasta encontrar la sección: # IPv4 local connections.
En esa sección, agregaremos una nueva línea con el siguiente contenido:
host all all 0.0.0.0/0 md5
Según sea la versión de PostgreSQL con la que estemos trabajando, es posible que como METHOD encontremos en lugar de md5, el valor scram-sha-256
En ese caso colocamos la línea así:
host all all 0.0.0.0/0 scram-sha-256
Configuración archivo postgresql.conf
Ahora es el turno del segundo archivo de configuración, postgresql.conf.
Ejecutamos el comando:
sudo nano /etc/postgresql/12/main/postgresql.conf
Una vez abierto el archivo, deslizamos el contenido del archivo, hasta que encontremos la sección:
# – Connection Settings –
En esta sección debemos asegurarnos que la línea que inicia con listen_addresses no esté comentada (símbolo # al inicio) y que como valor asignada tenga: ‘*’
El hecho que se encuentre el ‘*’ significa que la base de datos va a aceptar conexiones en entrada desde cualquier dirección IP que se la solicite.
Si queremos restringir el acceso remoto a una dirección IP específica, es suficiente escribir dentro de las comillas simples la dirección IP que vamos a permitir.
Si fuese el caso que hay mas direcciones IP individuales, se las debe escribir separadas por una coma (,).
Una vez realizados los cambios, hay que registrar las modificaciones, si se han hecho, del archivo.
Abrir Puerto en Firewall Linux
Antes de proceder a abrir el puerto 5432 (o el que hallamos especificado en fase de instalación), primero verificamos si en nuestro servidor está encendido el firewall.
Para esto ejecutamos el siguiente comando:
sudo ufw status verbose
La ejecución del comando anterior, puede darnos uno de los siguientes resultados:
Si el firewall está inactivo, podemos dirigirnos directamente al reinicio del servicio.
Si queremos en cambio que el firewall se active, ejecutamos el comando:
sudo ufw enable
Como vemos en la captura de pantalla, el servidor de datos está aceptando conexiones a través del puerto 5432 desde cualquier parte del mundo.
Reiniciar el Servicio PostgreSQL - LINUX
Por ultimo, debemos reiniciar el servicio de PostgreSQL para que los cambios que hemos aportado al servidor de datos inicien a funcionar.
Ejecutamos entonces el comando:
sudo systemctl restart postgresql.service
Probar el Acceso Remoto
Una vez que hemos terminado de Configurar el Acceso Remoto PostgreSQL, es el momento de realizar la prueba de una conexión remota, o desde un computador en la intranet o a través de Internet.
Antes de iniciar debemos procurarnos la dirección IP del computador donde se ha instalado la base de datos. Si fuere el caso debemos tener a la mano la dirección IP pública.
En el caso de nuestro ejemplo la dirección IP asignada en la red al computador en el que instalamos PostgreSQL es: 192.168.113.129
Realizar un PING
Si estamos realizando la prueba de acceso remoto a la base de datos en un dispositivo con Windows, independiente de la versión, presionamos la combinación Win+R y en la ventanita que se nos muestra, escribimos cmd y presionamos el botón OK
escribimos el siguiente comando:
ping 192.168.113.129
Recuerda que debes colocar la dirección IP del dispositivo en el que instalaste PostgreSQL.
Deberías obtener un resultado similar al de la captura de pantalla que se muestra a continuación.
Si no estás obteniendo un resultado similar, o vez que el resultado es que no se puede contactar la dirección IP del dispositivo, hay que resolver ese problema.
Probablemente hay algún problema a nivel del cableado de red que hay que resolver antes de proseguir. Asegúrate si no se trata de un servidor con sistema operativo de servidor, de que se ha activado la detección de redes (en ambos dispositivos).
Agregar el Servidor a pgAdmin
pgAdmin es una plataforma de administración y desarrollo de código abierto para PostgreSQL y sus sistemas de administración de bases de datos relacionales.
Haremos el procedimiento de agregar el servidor de bases de datos a la administración principal dentro de pgAdmin.
Una vez que estamos dentro de la aplicación, sea esta en su Versión de Windows, Linux o iOS, procedemos como explicado a continuación.
En la primera casilla, indicamos la dirección IP correspondiente, si hemos cambiado al momento de la instalación de PostgreSQL el puerto, lo indicamos, caso contrario lo dejamos con el valor por defecto.
Escribimos la contraseña de acceso y activamos si lo queremos la opción Salvar Contraseña.
Para finalizar, presionamos el botón Salvar.
Si la conexión se logra, se cierra la ventana y en la parte izquierda de pgAdmin se nos muestra el nuevo servidor agregado.
A este punto hemos ya logrado Configurar Acceso Remoto PostgreSQL satisfactoriamente.
Podemos de este momento en adelante utilizar nuestra base de datos para los propósitos que nos hemos fijado.