Benutzertabelle als GRANT-Statements dumpen
Eine einfacherere Alternative wäre das Tool pt-show-grants
aus dem Percona-Toolkit.
Bei der Einrichtung einer frischen Replikation kann es wichtig sein, dass vorhandene User nicht überschrieben werden. Mit dem folgenden Snippet lassen sich die Benutzer einer MySQL-DB als einfache GRANT-Statements inkl. gesonderten Rechten auf Datenbanken ausgeben und für den späteren Import passend bearbeiten.
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;}'
}
Ein Aufruf könnte dann so aussehen:
mygrants --host=prod-db1 --user=admin --password=secret
Eine einfacherere Alternative wäre das Tool pt-show-grants aus dem Percona-Toolkit.