Utilisation d’un fichier sécurisé pour l’authentification MySQL
I. Présentation
Lors de la mise en place de scripts utilisant MySQL ou de l'utilisation des commandes MySQL en CLI, il peut être gênant d'avoir à saisir le mot de passe directement dans le script ou la commande qui est exécuté . Nous allons donc chercher à le stocker dans un fichier et à aller le lire par une option supplémentaire dans les commandes. Cela peut nous être pratique dans un soucis de sécurité d'une part, mais également dans un soucis de facilité d'utilisation.
II. Fonctionnement
On passe pour cela par un fichier déjà existant qui est "/etc/mysql/debian.cnf". Ce fichier est déjà utilisé par le système. C'est votre machine qui, par le compte "debian-sys-maint" va faire des mises à jours sur la base de données ou des checks système. Le mot de passe associé à cet utilisateur est automatiquement créé à l'installation de MySQL. Il ne faut donc pas y toucher. Nous allons simplement nous contenter de copier ce fichier pour récupérer sa structure.
cp /etc/mysql/debian.cnf /etc/mysql/user.sql
Puis nous le modifions pour y mettre nos identifiants dans les champs "user" et "password" la partie "[client]" :
On peut aussi, dans le cas d'une connexion distante, mettre l'IP ou le nom FQDN de l'hôte distant MySQL. Par sécurité, on réduit les droits sur ce fichier. On ne laisse que le propriétaire avoir les droits de lecture dessus, on lui enlève même les droits d'écriture :
chmod 400 /etc/mysql/user.cnf
III. Utilisation
A présent, au lieu de nous connecter à MySQL avec cette commande :
mysql -u backup --password=< mot de passe >
On passera par notre fichier, le mot de passe ne sera donc plus à saisir ni en direct dans ligne de commande, ni dans l'espace de saisie qui suit cette commande :
mysql --defaults-extra-file=/etc/mysql/user.cnf
On doit bien faire attention à ce que l'option "--defaults-extra-file" soit la première de toutes les options. On utilisera exactement de la même façon l'option avec la commande "mysqldump" ou toute autre commande utilisant l'authentification mysql.
Bonjour,
N’y a t’il pas une erreur dans la première commande ? On copie un .cnf (contenant des paramètres MySQL) en .sql (ce qui n’a pas tellement de sens). Plus tard, on retrouve le même chemin/nom de fichier avec l’extension .cnf.