it-swarm.com.de

Sichern Sie MySQL-Benutzer

Wie kann ich MySQL-Benutzer und ihre Berechtigungen sichern? 

Etwas wie mysqldump? 

Ich suche nach etwas wie:

mysqldump -d -u root -p MyTable > Schema.sql
27
Cherian
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
36
spirit

Sie können die MySQL-Datenbank mit sichern

mysqldump -u root -p mysql > mysql.sql

und stellen Sie die MySQL-Datenbank wieder her, indem Sie sie ausführen 

 mysql -uroot -p mysql < mysql.sql

Vergiss es nicht 

FLUSH PRIVILEGES

nach dem Wiederherstellen des Dumps.

Ich hoffe es hilft...

21
Shubhansh

Meine Erfahrung mit MySQL habe ich bisher nicht gesehen, um Benutzer und ihre Privilegien über eine Befehlszeile zu sichern.

Aber ich kann diese kritischen Daten durch das Sichern von Mysql sichern

mysqldump -u root -p mysql > mysql.sql
14
simplyharsh

Die Benutzer und Berechtigungen werden im Datenbanknamen 'mysql' gespeichert. Sie können mysqldump verwenden, um die Tabellen im Datenbanknamen 'mysql' zu sichern.

6
Zoredache

Die oben aufgeführten Skripte vermitteln einen allgemeinen Eindruck, sind jedoch ineffizient. Sie forken/führen mysql n + 1 mal aus. Es kann in nur zwei Aufrufen von MySQL durchgeführt werden

mysql ${logininfo} -B -N -e "SELECT CONCAT('\'',user,'\'@\'',Host,'\'') from user where user != 'root'" mysql | \
while read uh
do
   echo "SHOW GRANTS FOR ${uh};"
done | mysql ${logininfo} -B -N | sed -e 's/$/;/' > ${outfile}

Wenn es andere Benutzer als root gibt, die Sie nicht sichern möchten, verwenden Sie oder und geben Sie user! = 'Whatever' in der where-Klausel des ersten mysql-Aufrufs an.

0
cdbunch

Es hat sich bewährt, Skripte für die tägliche Sicherung von MySQL-Benutzern und deren Berechtigungen zu verwenden. Werfen Sie einen Blick auf eine:

#!/bin/sh

HOSTNAME="localhost"

mysql -h $HOSTNAME -B -N -e "SELECT CONCAT('\'', user,'\'@\'', Host, '\'') FROM user WHERE user != 'debian-sys-maint' AND user != 'root' AND user != ''" mysql > mysql_all_users_$HOSTNAME.txt

while read line; do mysql -h $HOSTNAME -B -N -e "SHOW GRANTS FOR $line"; done < mysql_all_users_$HOSTNAME.txt > mysql_all_users_$HOSTNAME.sql

sed -i.bak 's/$/;/' mysql_all_users_$HOSTNAME.sql

rm mysql_all_users_$HOSTNAME.txt
rm mysql_all_users_$HOSTNAME.sql.bak

Ergebnis dieses Skripts ist eine mysqldump-Datei mit Benutzern und Berechtigungen.

P.S. Wenn für MySQL ein Passwort erforderlich ist, geben Sie -p oder -u username -p nach mysql -h $HOSTNAME an zwei Stellen.

0
Oleh Vasylyev

Percona hat dafür ein großartiges Werkzeug. pt-show-grants gibt Benutzer und ihre Berechtigungen aus, damit Sie sie problemlos erneut laden können.

https://www.percona.com/doc/percona-toolkit/LATEST/pt-show-grants.html

0
Josh Wilson