MySQL e le credenziali

Spesso e volentieri capita di interagire da riga di comando con MySql in maniera più specifica con uno dei sui client come mysql o mysqladmin. Ovviamente per accedere vengono MySQL chiede le credenziali che per forza di cose devono essere fornite. Nel caso in cui il client mysql venga utilizzato all’interno di uno script bash le credenziali devono essere indicate esplicitamente e questo in genere si ottiene nel seguente modo

#!/bin/bash
mysql -u USER -pPASSWORD -e "QUERY SQL"

N.B. da notare che la password deve essere indicata subito dopo il parametro -p senza spazio o separatori alcuno, a differenza dello user!

Dove sta il problema? Nel fatto che sicuramente sarà visualizzato il seguente warning

Warning: Using a password on the command line interface can be insecure.

Effettivamente sparpagliare le credenziali in ogni dove non è una bella idea e, nel caso vengano usate da riga di comando, possono essere visibili in chiaro tra i processi in esecuzione oltre che essere tracciate nei file di history della shell

Come ovviare? Esiste una sorta di utility che consente di risolvere il problema : mysql_config_editor. In breve questa utility consente di associare ad un set di credenziali un nome (una sorta di DSN) e salvarli in un file offuscato nella home dell’utente. In questo modo è sufficiente usare il nome del set di credenziali per accedere tramite i clients senza dover ogni volta esplicitare le credenziali.

Come definire il set di credenziali

il comando base è del tipo

mysql_config_editor set --login-path=<nome del DSN> --host=localhost --user=<utente> --password

una volta lanciato il comando viene chiesta la password dell’utente.

N.B. : tutti ci aspetteremmo che nel caso di password errata l’utility ci avvisi…. in realtà non è così! Sono riuscito ad salvare credenziali non corrette pertanto suggerisco di verificare sempre bene che il set definito funzioni.

Utilizzo del set di credenziali

definito il set l’utilizzo è piuttosto semplice. Con riferimento all’esempio iniziale il comando passa da

mysql -u USER -pPASSWORD -e "QUERY SQL"

a

mysql --login-path=NOME DEL SET -e "QUERY SQL"

N.B. quando si utilizza questa modalità per l’autenticazione il parametro –login-path deve SEMPRE essere il primo parametro indicato!

MySQL e la gestione sicura delle credenziali

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *