Il y a deux manières d’effectuer un export des comptes MySQL : avec mysqldump ou avec pt-show-grants du Percona Toolkit.
mysqldump
L’export se fait en :
- excluant toutes les bases
- en ajoutant les requêtes pour supprimer les comptes (utile si déjà existants)
- les requêtes pour créer les comptes
mysqlpump --exclude-databases=% --add-drop-user --users
pt-show-grants ( Percona Toolkit )
Le script de Percona fonctionne de la même manière.
pt-show-grants --drop
Méthode alternative (via requêtes SQL et awk)
Dans les environnements plus anciens ou si vous ne disposez pas de mysqlpump ou du Percona Toolkit, il est possible de générer et d’exécuter dynamiquement des requêtes SHOW GRANTS pour tous les utilisateurs du serveur :
mysql --skip-column-names -B -e "SELECT user, host FROM mysql.user;" | awk '{print "SHOW GRANTS FOR \x27"$1"\x27@\x27"$2"\x27;"}' | mysql --skip-column-names -B
[!WARNING] Soyez prudent : l’exécution directe des privilèges générés sur un autre serveur écrasera les droits existants, y compris potentiellement ceux du compte
root.
La première solution (mysqlpump) est en place dans mon script de dump MySQL.
Catégories : SysAdmin