Este artículo explica cómo conectarse a servidores de bases de datos PostgreSQL desde línea de comandos con psql sin necesidad de ingresar contraseñas.



Supongamos que deseamos conectarnos a la base de datos PostgreSQL "db1" en el host db.linuxito.com cuya instancia escucha peticiones el puerto 5432, autenticando con el usuario "usuario".

La terminal interactiva psql de PostgreSQL no permite pasar la contraseña del usuario de forma no interactiva. Esto significa que al efectuar la conexión, se solicitará la contraseña:

root@debian:~# psql -h db.linuxito.com -p 5432 -d db1 -U usuario
Password for user usuario:

Esto es un problema cunado se requiere realizar tareas desde scripts. También es engorroso si uno debe conectarse con frecuencia a una base de datos para realizar tareas de mantenimiento.

Afortunadamente Postgres cuenta con un mecanismo para guardar las contraseñas en un archivo de texto llamado .pgpass. Este archivo se aloja en el directorio home del usuario y permite almacenar las contraseñas para cada conexión.

Este archivo debe contener el siguiente formato:

hostname:port:database:username:password

Este archivo generalmente no se crea automáticamente al instalar Postgres, con lo cual debe ser creado de forma manual:

root@debian:~# nano ~/.pgpass

Por ejemplo, si la contraseña para este usuario es "trustno1", se debe agregar la siguiente línea:

db.linuxito.com:5432:db1:usuario:trustno1

Debido a que las contraseñas se almacenan de forma plana (sin encriptación), la seguridad de este archivo es de vital importancia. Para que psql sea capaz de utilizarlo, sus permisos deben ser 0600 o menos (sólo lectura y escritura para el dueño):

root@debian:~# chmod 0600 ~/.pgpass

A partir de ahora, al conectarse a la base "db1" en el host db.linuxito.com y puerto 5432 con el usuario "usuario" no se solicitará la contraseña:

root@debian:~# psql -h db.linuxito.com -p 5432 -d db1 -U usuario
psql (11.5, server 12.1)
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help.

db1=>

Referencias


Tal vez pueda interesarte


Compartí este artículo