Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So benennen Sie eine Datenbank in MySQL um

In einigen Fällen kann es wünschenswert sein, den Namen einer MySQL-Datenbank schnell zu ändern. Während es früher eine einfache RENAME DATABASE gab Befehl in älteren MySQL-Versionen, der diese Aufgabe ausführen sollte, RENAME DATABASE wurde inzwischen aus allen neueren Versionen entfernt, um Sicherheitsrisiken zu vermeiden.

Stattdessen untersuchen wir kurz eine Handvoll optionaler Methoden, mit denen Sie Ihre MySQL-Datenbank schnell und sicher umbenennen können.

Dumping und Reimport

Wenn Sie mit einer relativ kleinen Datenbank arbeiten, ist die schnellste Methode normalerweise die Verwendung von mysqldump Shell-Befehl, um eine Dump-Kopie der gesamten Datenbank zu erstellen, und importieren Sie dann alle Daten in die neu erstellte Datenbank mit dem richtigen Namen.

Beginnen Sie mit der Ausgabe des folgenden mysqldump Befehl von Ihrer Shell-Eingabeaufforderung aus und ersetzen Sie den entsprechenden username , password und oldDbName Werte. mysqldump wird verwendet, um physische Backups einer Datenbank zu erstellen, sodass wir diese Kopie verwenden können, um die Daten wieder in eine neue Datenbank zu importieren.

$ mysqldump -u username -p"password" -R oldDbName > oldDbName.sql

Wir verwenden das -p Flag, unmittelbar gefolgt von unserem Passwort, um eine Verbindung zur Datenbank herzustellen (ohne Leerzeichen dazwischen) und Eingabeaufforderungen zur Passworteingabe zu vermeiden, wenn diese Befehle ausgegeben werden. Achten Sie darauf, die umgebenden Anführungszeichen beizubehalten, da Passwörter mit eindeutigen Zeichen sonst zu Ausführungsproblemen führen können. Das -R flag ist ebenfalls wichtig und teilt mysqldump mit um gespeicherte Prozeduren und Funktionen zusammen mit den normalen Daten aus der Datenbank zu kopieren.

Als nächstes verwenden Sie mysqladmin Befehl zum Erstellen einer neuen Datenbank:

$ mysqladmin -u username -p"password" create newDbName

Verwenden Sie schließlich mit der neu erstellten Datenbank mysql um die von uns erstellte Dump-Datei in die neue Datenbank zu importieren.

$ mysql -u username -p"password" newDbName < oldDbName.sql

Drei grundlegende Befehle und Ihre neue Datenbank wurde erstellt. Sobald Sie überprüft haben, dass alles wie vorgesehen ist, können Sie mit dem Entfernen der alten Datenbank fortfahren.

Umbenennen von Tabellen mit InnoDB

Wenn Sie MySQL Version 5.5 (oder höher) verwenden, verwenden Sie wahrscheinlich die InnoDB-Speicher-Engine, die das Umbenennen von Datenbanken ganz einfach macht.

Kurz gesagt, Sie können die RENAME TABLE verwenden Befehl innerhalb einer MySQL-Eingabeaufforderung, um den Datenbanknamen effektiv zu ändern einer bestimmten Tabelle, während der Tabellenname intakt bleibt. Dazu muss die Datenbank mit dem neuen Namen jedoch bereits vorhanden sein. Beginnen Sie also mit dem Erstellen einer neuen Datenbank mit mysqladmin Shell-Befehl wie oben gezeigt.

Zum Beispiel, wenn wir bereits einen catalog haben Datenbank, die wir in library umbenennen möchten , würden wir zuerst die neue library erstellen Datenbank:

$ mysqladmin -u username -p"password" create library

Verbinden Sie sich nun mit mysql und führen Sie die folgende MySQL RENAME TABLE aus Anweisung für eine Tabelle Ihrer Wahl:

mysql> RENAME TABLE catalog.books TO library.books;

Wir haben gerade alle books verschoben Tabelle aus dem catalog Datenbank zu unserer neuen library Datenbank. Dieser Befehl kann nach Wunsch für alle relevanten Tabellen manuell ausgeführt werden, oder wir können die Aufgabe mit einem Shell-Skript vereinfachen, wie unten gezeigt.

Ein Shell-Befehlsskript verwenden

Für alle außer den kleinsten Datenbanken, manuelle Ausgabe von RENAME TABLE Befehle für jede Tabelle sind weder sehr praktisch noch effizient, aber zum Glück können wir einen einfachen Shell-Befehl mit mysql verwenden Dienstprogramm, um alle Tabellen in unserer alten Datenbank zu durchlaufen und umzubenennen, wodurch sie in die neue Datenbank verschoben werden.

Dies ist die Grundstruktur des Befehls:

$ mysql -u dbUsername -p"dbPassword" oldDatabase -sNe 'show tables' | while read table; do mysql -u dbUsername -p"dbPassword" -sNe "RENAME TABLE oldDatabase.$table TO newDatabase.$table"; done

Also für unseren Umzug aus dem alten catalog Datenbank in die neue library Datenbank ändern wir die Anweisung wie folgt:

$ mysql -u dbUsername -p"dbPassword" catalog -sNe 'show tables' | while read table; do mysql -u dbUsername -p"dbPassword" -sNe "RENAME TABLE catalog.$table TO library.$table"; done

Wir haben unseren Befehlen auch ein paar Flags hinzugefügt:

  • -s ist das Flag für silent mode daher gibt es weniger Ausgabe an die Shell.
  • -N verhindert die Ausgabe von Spaltennamen aus den Ergebnissen.
  • -e gibt die Anweisung an, die auf -e folgt Flag sollte ausgeführt werden dann wird die Shell beendet. Gemeint sind damit die Anweisungen 'show tables' und "RENAME TABLE catalog.$table TO library.$table" werden wie gewünscht als normale SQL-Anweisungen ausgeführt.

Das ist alles dazu. Ihre MySQL-Datenbank ist jetzt effektiv umbenannt.