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