2009-02-28 8 views
27

Wie kann ich MySQL Benutzer und ihre Privilegien sichern?Backup MySQL Benutzer

Alles wie mysqldump?

Ich suche so etwas wie:

mysqldump -d -u root -p MyTable > Schema.sql 

Antwort

14

Bisher meine Erfahrungen mit MySQL ich etwas zu Backup-Benutzer nicht sehen, und ihre Privilegien durch eine Befehlszeile.

aber ich kann Backup diese kritischen Daten durch mysql

mysqldump -u root -p mysql > mysql.sql 
+0

Wie sollte dies wiederhergestellt werden? ist es nur durch Ausführen der resultierenden Datei auf dem information_schema? –

6

Die Benutzer und Berechtigungen gespeichert sind, in der datenbank namens ‚mysql‘ das Sichern. Sie können mysqldump verwenden, um die Tabellen in der Datenbank "mysql" zu sichern.

+6

können Sie hinzufügen, wie Sie diese wiederherstellen? – Dementic

+0

@Dementic Siehe http://Stackoverflow.com/a/12634618/2310830 – RiggsFolly

34
mysql -BNe "select concat('\'',user,'\'@\'',host,'\'') from mysql.user where user != 'root'" | \ 
while read uh; do mysql -BNe "show grants for $uh" | sed 's/$/;/; s/\\\\/\\/g'; done > grants.sql 
+1

Lebensretter, dies! – Volomike

19

können Sie Backup MySQL-Datenbank

mysqldump -u root -p mysql > mysql.sql 

mit und MySQL-Datenbank wiederherstellen, indem

mysql -uroot -p mysql < mysql.sql 

Ausführung Sie nicht zu

FLUSH PRIVILEGES vergessen

nach dem Wiederherstellen von Dump.

Hoffe, es hilft ...

+0

Danke! Nach dem Befehl 'FLUSH PRIVILEGES' begann alles zu arbeiten. – Dzamir

+0

Dies ist die bessere Antwort, da es den Befehl flush priviles enthält. Eine andere Alternative besteht darin, den Serverprozess nur neu zu starten, statt die Berechtigungen zu löschen. – Ligemer

+3

Dies ist nur garantiert, wenn die Wiederherstellung auf die gleiche MySQL-Version funktioniert. Die 'mysql'-Datenbank kann sich je nach Version unterscheiden und enthält viel mehr als nur Benutzer/Privilegien. Wenn Sie Ihre Benutzer und Berechtigungen auf einen anderen Server migrieren möchten, ist die obige Antwort von @spirit der richtige Weg. – kostas

0

wahrscheinlich ziemlich offensichtlich für Liner mysql Befehl aber für über Geist Antwort hatte -u root Ppassword hinzuzufügen, nachdem beide mysql

Befehle

mysql -u root Ppassword -BNe "wähle concat ('\' ', user,' \ '@ \' ', host,' \ '') aus mysql.user wo user! = 'Root'" | während lesen uh; mysql -u root -ppassword -Bne "zeige Zuschüsse für $ uh" | sed 's/$ /; /; s/\\/\/g '; getan> grants.sql;