MySQL - Benutzerrechte exportieren
Geschrieben am 03.04.2009
Ich wollte heute Morgen die Benutzerrechte (Privileges) der MySQL-Benutzerkonten eines Servers exportieren, und war recht erstaunt darüber, zu diesem Thema weder einen Eintrag im MySQL-Handbuch, noch eine Beschreibung über Google finden zu können.
Ich habe mich also drangesetzt, und nach einiger Überlegung, folgendes Script geschrieben:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <?php //Mit Datenbank verbinden if ( ($db_handle = mysql_connect('HOST', 'BENUTZERNAME', 'PASSWORT')) === false) { die(mysql_error()); } //Benutzer auslesen $sql = "SELECT CONCAT(\"'\",User, \"'@'\", Host, \"'\") AS username, CONCAT(\"'\", Password, \"'\") AS password FROM mysql.user"; $query = mysql_query($sql, $db_handle) or die(mysql_error($db_handle)); while ($get = mysql_fetch_object ($query)) { //Query zur Erstellung des Benutzers echo "CREATE USER ".$get->username." IDENTIFIED BY ".$get->password.";\n"; //Benutzerrechte auslesen $ssql = "SHOW GRANTS FOR ".$get->username; $squery = mysql_query($ssql, $db_handle) or die(mysql_error($db_handle)); while ($srow = mysql_fetch_array ($squery)) { //Query zur erstellung der Benutzerrechte echo $srow[0].";\n"; } } ?> |
Wie kann man die Benutzerrechte über dieses Script exportieren?
- Den Quelltext in einer Datei, zum Beispiel
export_privileges.php, speichern - Die Rechte exportieren:
export_privileges.php > privileges.sql - Die Rechte importieren:
mysql < privileges.sql - Die Rechte neu laden:
mysql -e "FLUSH PRIVILEGES;"
Zusammenfassung:
1 2 3 | claude@localhost ~ $ export_privileges.php > privileges.sql claude@localhost ~ $ mysql -uBENUTZERNAME -pPASSWORT -hHOST < privileges.sql claude@localhost ~ $ mysql -uBENUTZERNAME -pPASSWORT -hHOST -e "FLUSH PRIVILEGES;" |
Fertig
vielen lieben dank! das script macht seine arbeit sehr gut. anfangs war ich zwar skeptisch wegen den passwörtern, hat aber wunderbar geklappt.
[...] Zum Kopieren von Datenbanknutzer samt Berechtigungen gibt es dieses tolle Script. [...]