Tiro monedas al aire, pero hasta ahora nunca las pude agarrar.

Muchas veces queremos colocar en nuestro script de backup de base de datos (postgres), el pg_dump, pero de alguna manera queres pasar el password de nuestro usuario.
Para hacerlo entramos a la consola y escribimos:
echo '*:5432:mapa:username:password' > ~/.pgpass

Con lo de pusimos arriba creamos un archivo oculto que se llama pgpass donde colocamos el puerto, la base de datos, usuario y el password. En este caso sería postgres como usuario con su correspondiente password. Ese archivo se genera en el home de nuestro usuario que estamos usando.
Los parámetros para el archivo pgpass son:
hostname:port:database:username:password

Ahora cambiamos de permiso. Escribimos en la consola:
chmod 0600 ~/.pgpass

Una vez hecho esto, ya podremos ejecutar el script.
En la parte del script que se usa pg_dump se colocaría lo siguiente:
pg_dump -U postgres  -c mapa -p 5432 -h  localhost > /home/proyectosbeta/backups/mapa.sql

Con esto ya no necesitaríamos escribir siempre el password.
Fuente 1: Postgres
Fuente 2: Postgres sitio oficial


Comments

  1. Hacete un favor y coloca nomas el pass en la consola cada vez que te pide en vez de dejar en plaintext en tu disco, enserio.

    1. Jorge, hacete un favor y procura hacer un backup automático de tu DB mediante cron, manteniendo la seguridad de tu DB (métodos de autenticación seguros especificados en pg_hba). Entonces entenderás que no siempre sirve poner la contraseña en la consola. Alegar «temas seguridad» es un argumento fangoso, pues .pgpass debe ser un archivo con permisos de lectura y modificación únicamente para el usuario, el cual es el único que conoce la contraseña de la base de datos que intenta acceder, así que el único momento en que se corre un riesgo de seguridad es cuando se el pendejo de pone a prestarle su sesión a otros usuarios.

      Un saludo!!

  2. La idea es pasarle el password de alguna manera por los backups automáticos que quiero hacer. Lo que voy a hacer ahora es lo que me dijiste. Eliminar el archivo de texto plano y editar en el archivo pg_hba.conf poniendo que para todas las base de datos que el usuario postgres tenga el método de autenticación a trust.
    Muchas gracias por la ayuda Jorge.

  3. Hola, por los comentarios que se hicieron no me queda claro cual sería la forma correcta de hacer un script de respaldo, sin que pida password.

    Gracias

    1. Al principio del post se había planteado hacer un script con pg_dump sin pedir pass. Pero en el comentario Jorge (experto en seguridad) había comentado que no se recomienda hacerlo. Es siempre mejor escribir el pass en la consola.
      saludos, jose

Responder a Nicolas Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *