Dump des privilèges MySQL

Publié le 10 novembre 2010 par Rumbaya

Testé sur Debian 5.0

Une petite fonction Bash bien pratique trouvée ici (un grand merci à l’auteur) qui permet d’afficher les privilèges utilisateurs d’un serveur MySQL. Très utile pour transférer les utilisateurs et leurs droits d’un serveur à l’autre.

Voici la fonction, à mettre dans son ~/bash_aliases ou ~/bashrc :


mygrants()
{
mysql -B -N $@ -e « SELECT DISTINCT CONCAT(
‘SHOW GRANTS FOR  »’, user,  »’@ »’, host,  »’;’
) AS query FROM mysql.user » | \
mysql $@ | \
sed ‘s/\(GRANT .*\)/\1;/;s/^\(Grants for .*\)/## \1 ##/;/##/{x;p;x;}’
}

On l’utilise ainsi, sur le serveur source :

mygrants –user=admin –password=secret > privileges.sql

Il est ensuite possible d’éditer le fichier privileges.sql pour enlever les utilisateurs qu’on ne veut pas transférer, par exemple debian-sys-maint sur les machines Debian.

Ensuite, sur le serveur destination :

cat privileges.sql | mysql –user=admin –password=secret