Quando si usano gli strumenti a linea di comando sorge ben presto il problema di come fare per gestire la password, necessaria per il collegamento al db, senza indicarla nel comando che si inserisce in qualche script e che probabilmente qualche utente non autorizzato potrebbe vedere e carpire.
La soluzione si chiama .pgpass è un file memorizzato nella home directory dell’utente che contiene una riga del tipo:
hostname:port:database:username:password
Dove memorizzare tutte le password necessarie.
Il file deve avere le giuste permission cosa di cui ci si può accertare con un:
chmod 600 ./.pgpass
Attenzione: se le permission non sono corrette il file viene ignorato.
Le righe vuote o che iniziano con ‘#’ sono ignorate.
Il file viene scorso dall’alto verso il basso e appena eseguito il match viene usata la password corrispondente.
Nei primi 4 campi è possibile inserire un ‘*’ ad indicare qualsiasi valore.
Quindi eseguendo un comando del tipo:
pg_dumpall --hostname=localhost --port=5432 --database=postgres --username=fol --file=db.backup
aprirà il file .pgpass e cercherà la riga:
localhost:5432:postgres:fol
andando poi ad utilizzare la password corrispondente.
come fanno però le varie utiliti a localizzare il file ,pgpass ?
Ci pensa la variabile di sistema che si chiama: PGPASS e che immagino avrete ormai intuito conterrà qualcosa del tipo:
PGPASS=~/.bash_login
Per fare in modo che la variabile sia impostata ad ogni login inseriamo nel file:
~/.bashrc
i seguenti comandi:
PGPASS=~/.bash_login export PGPASS
Alla prossima
Andrea