Voici un petit script qui permet de générer un backup SQL de tous les utilisateur mysql d’un serveur.
Il utilise le bash et le client mysql en ligne de commande. Pour l’utiliser, il suffit de lui donner comme paramètres le nom de la machine (Paramètre -h), le login (-u) et le mot de passe (-p).
1 | $> ./backup-user.sh -h localhost -u login -p passwd |
Voici le code source :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #! /bin/bash while getopts ':h:u:p:' flag ; do case $flag in h ) sHost=$OPTARG ;; u ) sLogin=$OPTARG ;; p ) sPasswd=$OPTARG ;; * ) ;; esac done if [ "x" != "x${sPasswd}" ] ; then sPasswd="-p${sPasswd}" fi for u in $(mysql -h "$sHost" -u "$sLogin" "${sPasswd}" --skip-column-names -e "SELECT DISTINCT CONCAT('\'', User, '\'@\'', Host, '\'') FROM mysql.user;" | sort) ; do echo "### User : $u" ; mysql -h "$sHost" -u "$sLogin" "-p${sPasswd}" --skip-column-names -e "SHOW GRANTS FOR $u" | ( while read l ; do echo -e "$l ;\nFLUSH PRIVILEGES ;" ; done ) ; done |
Et voici une version sans paramètre
1 2 3 4 5 6 7 8 9 10 | #! /bin/bash sHost='localhost' ; sLogin='login' ; sPasswd='passwd' ; for u in $(mysql -h "$sHost" -u "$sLogin" "-p${sPasswd}" --skip-column-names -e "SELECT DISTINCT CONCAT('\'', User, '\'@\'', Host, '\'') FROM mysql.user;" | sort) ; do echo "### User : $u" ; mysql -h "$sHost" -u "$sLogin" "-p${sPasswd}" --skip-column-names -e "SHOW GRANTS FOR $u" | ( while read l ; do echo -e "$l ;\nFLUSH PRIVILEGES ;" ; done ) ; done |
One Comment
Backup all mysql user from server.. Super
Post a Comment