10 novembre 2010
Dump des privilèges MySQL
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 |