Zuletzt aktualisiert am 21. Januar 2021.
Nicht immer gibt es die passende Klicki-Bunti-Oberfläche für den Export und Import von MySQL-Datenbanken. Hier erfährst du, wie du Datenbanken über die Konsole/das Terminal exportierst und wieder importierst.
Wenn kein PHPMyAdmin auf dem Server installiert ist (oder eine andere Oberfläche), bleibt einem nicht viel anderes übrig, als entweder zusätzliche Software zu installieren, oder aber einen Export und Import einer Datenbank über die Konsole durchzuführen. Zusätzlich vermeidet man eventuelle Sicherheitslücken durch ein falsch konfiguriertes oder schlicht veraltetes PHPMyAdmin.
Auch wenn die Datenbank eine gewisse Größe erreicht hat, ist der Export und Import mittels PHPMyAdmin beschwerlich, da oftmals PHP-Upload-Limits, Memory_Limits oder simple Timeouts den Ex- oder Import verhindern.
Vorteile des Exports und Imports über die Konsole
✅ Schnell ✅ Keine Zusatzsoftware notwendig ✅ Keine zusätzlichen potentiellen Sicherheitsschwachstellen ✅ Export und Import großer Datenbanken problemlos möglich
Der Export von MySQL Datenbanken über die Konsole
Für den Export einer bestehenden Datenbank wird bei einer MySQL-Installation bereits das passende Tool mitgeliefert: mysqldump. Die Datenbank wird dabei gedumpt und als SQL-File im Dateisystem gespeichert.
Die Syntax ist dabei einfach verständlich und es können viele nützliche und praxisnahe Fälle abgedeckt werden:
Export einer einzelnen Datenbank
Mit dem folgenden Befehl wird die Datenbank datenbank1
exportiert und im SQL-File “mein-sql-dump.sql” gespeichert.
mysqldump -uBENUTZER -p datenbank1 > mein-sql-dump.sql
Parameter | Bedeutung |
mysqldump | Das genutzte Programm, hier mysqldump |
-uBenutzer | Angabe des Benutzers der Rechte für den Datenbankzugriff hat (das fehlende Leerzeichen ist Absicht!) |
-p | Bedeutet, dass ein Passwort für den Nutzer zur Authentifizierung eingegeben werden muss |
datenbank1 | Name der zu exportierenden Datenbank |
> mein-sql-dump.sql | Das Zeichen “>” legt Fest, dass der Output des Befehls in die dahinter genannte Datei geschrieben wird. In diesem Fall “mein-sql-dump.sql” |
Tipp: Der Export mehrerer einzelner Datenbanken funktioniert mit folgendem Befehl:
mysqldump -uBENUTZER -p –databases datenbank_1 datenbank_2 datenbank_n > mein-sql-dump.sql
Export einzelner Datenbanktabellen
Mit Hilfe von mysqldump kann man ebenfalls einzelne Tabellen aus einer Datenbank exportieren.
mysqldump -uBenutzer -p datenbank_1 tabellen_name > mein-sql-dump.sql
Parameter | Bedeutung |
mysqldump | Das genutzte Programm, hier mysqldump |
-uBenutzer | Angabe des Benutzers der Rechte für den Datenbankzugriff hat (das fehlende Leerzeichen ist Absicht!) |
-p | Bedeutet, dass ein Passwort für den Nutzer zur Authentifizierung eingegeben werden muss. |
datenbank_1 | Der Name der Datenbank, aus der eine (oder mehrere) Tabelle(n) exportiert werden sollen. |
tabellen_name | Der Name der zu exportierenden Tabelle aus der zuvor angegebenen Datenbank. |
> mein-sql-dump.sql | Das Zeichen “>” legt Fest, dass der Output des Befehls in die dahinter genannte Datei geschrieben wird. In diesem Fall “mein-sql-dump.sql”. |
Export aller Datenbanken
mysqldump bietet (z.B. für Backups) die nützliche Möglichkeit alle Datenbanken in einem File zu exportieren, auf die der jeweilige Nutzer Zugriff hat.
mysqldump -uBENUTZER -p –all-databases > mein-sql-dump.sql
Parameter | Bedeutung |
mysqldump | Das genutzte Programm, hier mysqldump |
-uBENUTZER | Angabe des Benutzers der Rechte für den Datenbankzugriff hat (das fehlende Leerzeichen ist Absicht!) |
-p | Bedeutet, dass ein Passwort für den Nutzer zur Authentifizierung eingegeben werden muss. |
–all-databases | Bedeutet, dass ALLE Datenbanken, auf die der Nutzer Zugriff hat, exportiert werden sollen. |
> mein-sql-dump.sql | Das Zeichen “>” legt Fest, dass der Output des Befehls in die dahinter genannte Datei geschrieben wird. In diesem Fall “mein-sql-dump.sql”. |
MySQL-Dumps komprimieren und die Größe verkleinern
Besonders bei Backups und größeren Datenbanken kann es durchaus sinnvoll sein, den exportierten dump zu komprimieren und so Speicherplatz einzusparen.
Dafür können wir die Ausgabe, die bei den bisherigen Kommandos direkt in “mein-sql-dump.sql” geschrieben worden ist, mit Hilfe des “Pipe”-Zeichens umleiten und in einer komprimierten Datei speichern.
mysqldump -uBENUTZER -p datenbank_1 tabellen_name | gzip -c > mein-sql-dump.sql.gz
Parameter | Bedeutung |
mysqldump | Das genutzte Programm, hier mysqldump |
-uBenutzer | Angabe des Benutzers der Rechte für den Datenbankzugriff hat (das fehlende Leerzeichen ist Absicht!) |
-p | Bedeutet, dass ein Passwort für den Nutzer zur Authentifizierung eingegeben werden muss. |
datenbank_1 | Der Name der Datenbank, aus der exportiert wird. |
tabellen_name | Der Name der Tabelle(n), die exportiert werden sollen. |
| | Der “Pipe”-Operator. Die Ausgabe des vorherigen Befehls (vor dem Zeichen) wird mit dem Befehl hinter dem Zeichen verknüpft. Die Ausgabe des Datenbankexports wird so direkt zum Komprimieren “weitergegeben” |
gzip -c | Das Programm gzip wird aufgerufen (mit dem Parameter -c). Mit -c wird die Ausgabe, also das komprimierte File an die Standardausgabe umgeleitet. Die Standardausgabe wird mit dem nächsten Parameter dann in ein komprimiertes File ausgegeben. |
> mein-sql-dump.sql.gz | Die Standardausgabe wird im File “mein-sql-dump.sql.gz” gespeichert. |
Tipp: Das Komprimieren von MySQL-Dumps ist besonders dann sinnvoll, wenn zum Beispiel zu Backupzwecken mehrere Dumps parallel aufbewahrt werden (und z.B. jede Stunde ein weiterer Dump erzeugt wird).
Hinweis: Da es sich bei SQL-Files im engsten Sinne um wenig mehr als reine Textfiles handelt, ist die Wirkung von Kompressionsverfahren hier besonders gut.
Der Import von SQL-Files bzw. Datenbanken über die Konsole
Über die Konsole lassen sich spielen einfach Datenbankfiles die zuvor exportiert und im .sql-Format vorliegen, in eine Datenbank importieren. Datenbanken lassen sich so wieder einspielen
Wir nutzen dazu direkt die Anwendung “mysql” und navigieren auf der Konsole in das Verzeichnis, in dem die .sql-Datei liegt. Danach importieren wir die Datenbank wie folgt:
mysql -uBENUTZER -p datenbank_1 < mein-sql-dump.sql
Parameter | Bedeutung |
mysql | Das aufgerufene Programm, hier mysql |
-uBENUTZER | Angabe des Benutzers der Rechte für den Datenbankzugriff hat (das fehlende Leerzeichen ist Absicht!) |
-p | Bedeutet, dass ein Passwort für den Zugriff auf die Datenbank (und damit für den import) benötigt wird |
datenbank_1 | Der Name der Datenbank in die der Dump importiert werden soll. |
< mein-sql-dump.sql | Der Dum aus der Datei “mein-sql-dump.sql” soll importiert werden. |
Tipp: Beachte den Pfeil “<” oder “>”. Die Spitze zeigt dabei die Richtung, in die importiert (“<“)bzw. exportiert (“>”) werden soll.
Tipp: Oftmals sind die Datenbankdumps (z.B. aus Backups) zwecks weniger Speicherplatzverbrauch komprimiert. Man erkennt diese Dateien z.B. an der Endung .zip oder .tar.gz. Diese Files müssen vor dem Import entpackt werden.
Schreibe eine Antwort