AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Tutorials MySQL-Benutzer von einem Server zum anderen migrieren

MySQL-Benutzer von einem Server zum anderen migrieren

Ein Tutorial von Codehunter · begonnen am 21. Nov 2016 · letzter Beitrag vom 21. Nov 2016
Antwort Antwort
Benutzerbild von Codehunter
Codehunter
Registriert seit: 3. Jun 2003
Hallo zusammen!

Da bei meinen Projekten relativ komplexe Rechtevergabe auf Datenbankebene erfolgt (und dies unter Sicherheitsaspekten ja eigentlich generell so sein sollte), bin ich regelmäßig an folgendem Problem verzweifelt: Wie bekomme ich die ganzen "Grants" von einem Server zum anderen migriert? Beispielsweise wenn die Benutzer vom Testserver auf den Produktivserver "kopiert" werden sollen.

Unter Linux bieten sich hierfür die Percona-Toolkits an, unter Windows ist das zwar auch möglich, aber ziemlich umständlich weil man sich vorher noch eine Perl-Umgebung aufsetzen muss. Daher nutzen wir das Programm HeidiSQL für dieses Tutorial.

HeidiSQL bietet zwar für den Transfer von Tabellen und ganzen Datenbanken ein sehr einfaches Werkzeug, vergleichbares für die MySQL-Benutzer ist aber nicht vorgesehen.

Folgende Voraussetzungen müssen erfüllt sein, damit dieses Tutorial funktioniert:
  1. HeidiSQL installiert und Bedienungskenntnisse dazu vorhanden
  2. Root-Zugriff auf die Datenbank "mysql" auf beiden Servern
  3. Verbindung zu beiden Servern im HeidiSQL-Verbindungsmanager konfiguriert
  4. Die Namen der Datenbanken sind auf dem Quell- und Zielserver identisch

Bevor wir mit unserem Experiment beginnen, legen wir uns natürlich von beiden Servern bzw. Datenbanken (Quelle und Ziel) Backups an. Man weiß ja nie...

Zunächst öffnen wir die Benutzerverwaltung der Quelldatenbank. Auf der linken Seite sehen wir die vorhandenen Benutzer. Es ist nicht ungewöhnlich, dass Benutzernamen hier mehrfach erscheinen. Man kann in MySQL jedem Benutzer vorgeben, von welchen Hosts aus er sich anmelden darf. Gibt es mehrere solcher Anmelde-Quell-Hosts, so erscheinen entsprechend für diesen Benutzer mehrere Einträge in der Benutzerverwaltung.

Wir notieren uns die Benutzer, die migriert werden sollen. Ich mache dies immer in Form einer Tabelle auf Schmierzettel: Benutzername, Host und Passwort (Achtung: Das Passwort wird in HeidiSQL nur verschlüsselt angezeigt, man muss das Klartextpasswort kennen).

Wir schließen nun den Verbindungsmanager der Quelldatenbank und öffnen den der Zieldatenbank. Hier legen wir die selben Kombinationen aus Benutzername, Host und Passwort manuell an, vergeben aber keinerlei Grants. Wir speichern die neu angelegten Benutzer und schließen den Verbindungsmanager.

Nun öffnen wir auf dem Quellserver die Datenbank "mysql" und klicken im Baum links mit der rechten Maustaste auf den Eintrag "mysql" und im Kontextmenü auf "Datenbank SQL-Export". Es öffnet sich das Fenster "Tabellen-Werkzeuge". Im Baum links entfernen wir den Haken bei "mysql" und klappen diesen Eintrag stattdessen auf, sodass wir die einzelnen Tabellennamen sehen. Nun haken wir die Einträge "columns_priv", "db", "procs_priv", "proxies_priv" und "tables_priv" an.

Auf der rechten Seite im Reiter "SQL Export" entfernen wir alle Haken bei Datenbanken löschen/erzeugen und Tabellen löschen/erzeugen. In der Combobox "Daten" wählen wir "INSERT" aus.

Nun können wir entweder die Grants direkt auf den Zielserver übergeben, indem wir in der Combobox "Ausgabe" den betreffenden Zielserver auswählen und dann in der Combobox "Datenbank" den Eintrag "mysql" wählen. Aber Achtung! Dies funktioniert nur dann, wenn Quellserver und Zielserver exakt identische Benutzer und Grants haben sollen. Es werden nämlich sämtliche Grant-Einträge kopiert.

Besser ist es, man lässt sich den Export als SQL-Script ausgeben. Entweder per Zwischenablage ("Ausgabe" = "Clipboard") oder als Datei. Im Anschluss kann man das Script bearbeiten, überflüssige Einträge entfernen und/oder Namen von Datenbanken umschreiben, falls diese auf dem Zielserver anders heißen. Anschließend kann man dieses Script als Abfrage auf dem Zielserver ausführen.

So, das wars schon. Die Grants sind ohne umständliches Geklicke in der Benutzerverwaltung migriert.

Grüße
Euer Cody
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
 
Benutzerbild von borncrush
borncrush

 
Delphi XE7 Enterprise
 
#2
  Alt 21. Nov 2016, 09:03
Super. Danke!
  Mit Zitat antworten Zitat
Themen-Optionen Tutorial durchsuchen
Tutorial durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz