PostgreSQL 🐘 : Almacenar Credenciales de Forma Segura
Cuando trabajas con bases de datos en PostgreSQL y en general, una de las tareas más comunes es conectarte a las bases de datos desde la línea comandos usando el cliente psql
. Sin embargo, cada vez que lo haces, el servidor de PostgreSQL te pide la contraseña. Esto puede resultar tedioso, especialmente al automatizar tareas o ejecutar scripts. Para evitar este inconveniente, PostgreSQL ofrece una herramienta denominada pgpass
, que permite almacenar las credenciales de acceso de forma segura y automática, eliminando la necesidad de ingresar la contraseña en cada conexión. En este post aprenderás a crear y utilizar el archivo pgpass
de manera efectiva.
¿Qué es el Archivo Pgpass?
El archivo pgpass
es un archivo de texto que almacena credenciales de autenticación para servidores PostgreSQL. Su función principal es permitir conexiones automáticas sin que el usuario tenga que ingresar manualmente la contraseña en cada sesión.
Este archivo es especialmente útil en los siguientes casos:
- Automatización de tareas: Si usas scripts o cron jobs (tareas programadas) que requieren conectarse a PostgreSQL,
pgpass
evita que tengas que escribir la contraseña en cada ejecución. - Conexión desde aplicaciones: Herramientas como
psql
,pg_dump
opg_restore
pueden usarpgpass
para conectarse sin pedir credenciales. - Mejor seguridad: Evita almacenar contraseñas en scripts o en variables de entorno, reduciendo riesgos de exposición.
Ubicación del Archivo Pgpass
El archivo pgpass
debe guardarse en una ubicación específica dependiendo del sistema operativo.
La ubicación del archivo en Linux/macOS normalmente se encuentra en el directorio de inicio de tu usuario (
~/.pgpass
) Ejemplo:1
/Users/<user>/.pgpass
En Windows se debe buscar el destino de instalación, generalmente es
%APPDATA%\postgresql\pgpass.conf
. Ejemplo:1
C:\Users\<usuario>\AppData\Roaming\postgresql\pgpass.conf
Crear Archivo Pgpass
Como ya sabemos el archivo pgpass
debe guardarse en una ubicación específica dependiendo del sistema operativo. Para ello realiza los siguientes pasos:
- Abre una terminal o símbolo del sistema.
- Crea el archivo
pgpass
en la ubicación que corresponda según tu sistema operativo.
En Linux/macOS creamos el archivo con el comando
touch
:1
touch ~/.pgpass
En Windows debes buscar el destino de instalación, puede ser algo como
%APPDATA%\postgresql\pgpass.conf
. Una vez encontrado, ejecuta el siguiente comando:1
echo '' > pgpass.conf
Formato del archivo pgpass
El archivo pgpass
tiene un formato muy sencillo, donde cada línea describe las credenciales para una conexión específica. La estructura es la siguiente:
1
hostname:port:database:username:password
hostname
: El nombre del host del servidor de la base de datos. Si la base de datos está en tu máquina local, usamoslocalhost
.port
: El puerto en el que PostgreSQL está escuchando. El puerto predeterminado es5432
, aunque puede ser otro si lo has configurado de manera diferente.database
: El nombre de la base de datos a la que deseas conectarte.username
: El nombre de usuario con el que te conectarás a la base de datos.password
: La contraseña asociada a ese usuario.
Añadir las credenciales
Escribe las credenciales necesarias en el archivo pgpass
siguiendo el formato indicado anteriormente. Puedes agregar tantas entradas como necesites, una por línea.
Ejemplo:
1
localhost:5432:postgres:admin:secreta123
Conectarse a PostgreSQL sin ingresar la contraseña
Con el archivo pgpass
configurado correctamente, ahora puedes conectarte a PostgreSQL de la siguiente manera:
1
psql -h localhost -U admin -d postgres
PostgreSQL leerá la contraseña desde el archivo pgpass
y se conectará automáticamente.