MySQL : résoudre le message “Warning: Using a password on the command line interface can be insecure.

Afin de sauvegarder de manière journalière les différentes bases de données présentes sur mon serveur, j’ai écrit un script en bash et une tâche CRON s’occupe de le lancer de manière automatique.

Le script m’envoie un email d’information me permettant de vérifier que tout s’est bien déroulé. Malheureusement, j’obtenais pour chaque commande mysql ou mysqldump lancée dans le script le message d’avertissement suivant.

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

En effet, les informations étant en clair dans les lignes de commande présentes dans le script. Exemple:

En effet, les informations étant en clair dans les lignes de commande présentes dans le script. Exemple:

mysqldump -u$USER -p$PASSWORD $dbname > ${exportFile}

Cela n’est pas sécurisé.
Et si quelqu’un accède à mes scripts, à mes logs, ou à mes informations via certaines commandes de monitoring, il aura alors accès à toutes les bases de données concernées.

Pour remédier à cela j’ai créé un fichier contenant les données de connexion .

vi /etc/mysql/mysql-backup-script.cnf

On écrit les données de connexion à la base de données comme suit:

[client]
user = 'backupuser'
password = 'BIG_SECURE_PASSWORD'

On définit des droits limités sur le fichier

chmod 400 /etc/mysql/mysql-backup-script.cnf

Ensuite, on remplace mes commandes mysql ou mysqldump par des commandes correspondant au format suivant, et le tour est joué !

mysqldump --defaults-extra-file=/etc/mysql/mysql-backup-script.cnf --databases $dbname > ${exportFile}

Important: L’argument --defaults-extra-file doit être placé en premier pour être pris en compte.