Ein Blog über Code, Hardware und Co

Wordpress und Webentwicklung

MySQL über die Konsole exportieren und importieren

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
ParameterBedeutung
mysqldumpDas genutzte Programm, hier mysqldump
-uBenutzerAngabe des Benutzers der Rechte für den Datenbankzugriff hat (das fehlende Leerzeichen ist Absicht!)
-pBedeutet, dass ein Passwort für den Nutzer zur Authentifizierung eingegeben werden muss
datenbank1Name der zu exportierenden Datenbank
> mein-sql-dump.sqlDas Zeichen “>” legt Fest, dass der Output des Befehls in die dahinter genannte Datei geschrieben wird. In diesem Fall “mein-sql-dump.sql”
Tabelle 1: Bedeutung der einzelnen Parameter beim Export einer einzelnen Datenbank.

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
ParameterBedeutung
mysqldumpDas genutzte Programm, hier mysqldump
-uBenutzerAngabe des Benutzers der Rechte für den Datenbankzugriff hat (das fehlende Leerzeichen ist Absicht!)
-pBedeutet, dass ein Passwort für den Nutzer zur Authentifizierung eingegeben werden muss.
datenbank_1Der Name der Datenbank, aus der eine (oder mehrere) Tabelle(n) exportiert werden sollen.
tabellen_nameDer Name der zu exportierenden Tabelle aus der zuvor angegebenen Datenbank.
> mein-sql-dump.sqlDas Zeichen “>” legt Fest, dass der Output des Befehls in die dahinter genannte Datei geschrieben wird. In diesem Fall “mein-sql-dump.sql”.
Tabelle 2: Bedeutung der einzelnen Parameter beim Export einer einzelnen Tabelle aus einer Datenbank.

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
ParameterBedeutung
mysqldumpDas genutzte Programm, hier mysqldump
-uBENUTZERAngabe des Benutzers der Rechte für den Datenbankzugriff hat (das fehlende Leerzeichen ist Absicht!)
-pBedeutet, dass ein Passwort für den Nutzer zur Authentifizierung eingegeben werden muss.
–all-databasesBedeutet, dass ALLE Datenbanken, auf die der Nutzer Zugriff hat, exportiert werden sollen.
> mein-sql-dump.sqlDas Zeichen “>” legt Fest, dass der Output des Befehls in die dahinter genannte Datei geschrieben wird. In diesem Fall “mein-sql-dump.sql”.
Tabelle 3: Bedeutung der einzelnen Parameter beim Export aller Datenbanken

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
ParameterBedeutung
mysqldumpDas genutzte Programm, hier mysqldump
-uBenutzerAngabe des Benutzers der Rechte für den Datenbankzugriff hat (das fehlende Leerzeichen ist Absicht!)
-pBedeutet, dass ein Passwort für den Nutzer zur Authentifizierung eingegeben werden muss.
datenbank_1Der Name der Datenbank, aus der exportiert wird.
tabellen_nameDer 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 -cDas 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.gzDie Standardausgabe wird im File “mein-sql-dump.sql.gz” gespeichert.
Tabelle 4: Bedeutung der einzelnen Parameter beim Export einer Datenbank und der gleichzeitigen Komprimierung.

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
ParameterBedeutung
mysqlDas aufgerufene Programm, hier mysql
-uBENUTZERAngabe des Benutzers der Rechte für den Datenbankzugriff hat (das fehlende Leerzeichen ist Absicht!)
-pBedeutet, dass ein Passwort für den Zugriff auf die Datenbank (und damit für den import) benötigt wird
datenbank_1Der Name der Datenbank in die der Dump importiert werden soll.
< mein-sql-dump.sqlDer Dum aus der Datei “mein-sql-dump.sql” soll importiert werden.
Tabelle 5: Bedeutung der einzelnen Paramater beim Import eines SQL-Files in eine Datenbank,

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