MySQL – Benutzer und Rechte von einem Server auf den anderen Übertragen.

Eine einzelne Datenbank von Einem auf den anderen Server zu kopieren bzw. zu verschieben ist mit mysqldump einfach und schnell erledigt.

Etwas kniffliger ist das Übertragen der Rechte nur für diese Datenbank. Daher will ich hier zumindest in Grundzügen ein mögliches Vorgehen darlegen.

Grundidee: Mit dem MySQL-Befehl show grants kann man die kompletten Rechte eines Benutzers anzeigen lassen. Praktischerweise spuckt MySQL das gleich so aus, dass man die Befehler per Copy&Paste im Ziel-MySQL ausführen kann.

show grants bekommt als Parameter ein Argument der Form username@host. Um alle Rechte zu übertragen muss ich also alle username@host-Paare kennen, die Zugriff auf die Datenbank haben.

In den meisten Fällen kann ich diese aus der Tabelle db in der Datenbank mysql auslesen. Unter Umständen muss noch die Tabelle host hinzugezogen werden – das lasse ich jetzt hier erst einmal aussen vor.

mysql> select CONCAT(user,'@',host) from db where db='foo';
+-----------------------------------+
| CONCAT(user,'@',host) |
+-----------------------------------+
| foouser@256.239.2.2 |
| fooadmin@localhost |
| foouser@remoteminds.it |
+-----------------------------------+

Jetzt lasse ich auf jeden der user@host-Paare das show grants los:

mysql> show grants for foouser@256.239.2.2;
+------------------------------------------------------------------------------------------------------------------------------+
| Grants for foouser@256.239.2.2 |
+------------------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'foouser@'256.239.2.2' IDENTIFIED BY PASSWORD '*XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' |
| GRANT SELECT, CREATE TEMPORARY TABLES, LOCK TABLES ON `foo`.* TO 'foouser@'256.239.2.2' |
+------------------------------------------------------------------------------------------------------------------------------+

Die einzelnen GRANT-Statements muss ich jetzt per Copy&Paste auf dem Zielserver ausführen – fertig. Da show grants auch das Passwort mit ausspuckt brauche ich mich um nichts weiter zu kümmern.

Zu guter letzt hier noch ein Link zu einer allgemeinen Übersicht zur Benutzerverwaltung mit MySQL:

http://www1.uni-hamburg.de/RRZ/Software/MySQL/Benutzerverwaltung.htm

Dieser Beitrag wurde unter Kniffe, MySQL, SQL abgelegt und mit , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.