# Benutzertabelle als GRANT-Statements dumpen

<p class="callout success">Eine einfacherere Alternative wäre das Tool `pt-show-grants` aus dem Percona-Toolkit.</p>

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.

```shell
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:

```shell
mygrants --host=prod-db1 --user=admin --password=secret
```