viernes, 4 de marzo de 2016

Pgpass-Script psql no interactivo sin pedir password o con password automática

Cuando creamos un script para ejecutar tareas automáticas en PostgreSQL con psql uno de los problemas que nos podemos encontrar es que, para ejecutar una sentencia, por defecto PostgreSQL nos pedirá una contraseña y por tanto el proceso fallará. Para solucionar esto y que el script no pida la contraseña solo es necesario incluir en el home del usuario que lo lanza un fichero .pgpass con la siguiente estructura:

              hostname:port:database:username:password

Por ejemplo si el script se va a ejecutar en el mismo servidor donde está alojada la base de datos (localhost), el puerto es el 5432, el nombre de la base de datos es lapsusmentis, el usuario es metempsicosis y la contraseña es roro lo que tendríamos que incluir en el fichero sería:

              localhost:5432:lapsusmentis:metempsicosis:roro

Para generar el fichero de una manera rápida y cómoda podemos lanzar el siguiente comando que generará el archivo .pgpass en el home del root:

[root@lapsus ~]# echo  localhost:5432:lapsusmentis:metempsicosis:roro >> /root/.pgpass

Como notas adicionales tenemos que tener en cuenta que para usuarios distintos al root el directorio de home del usuario es/home/nombre_del_usuario y que los permisos que ha de tener el fichero .pgpass han de ser de de lectura y escritura solo para el propietario (en caso de tener permisos superiores no funcionará por seguridad). Si queremos cambiar estos permisos para garantizar que son correctos podemos lanzar el comando:

[root@lapsus ~]# chmod 0600 /root/.pgpass

No hay comentarios:

Publicar un comentario