MySQL Datenbank per SSH Terminal importieren: Unterschied zwischen den Versionen
(Artikel passenden Kundenkategorien zugeordnet) |
|||
| (2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
| − | < | + | Mit dem Kommandozeilen-Client <code>mariadb</code> beziehungsweise <code>mysql</code> können Sie eine SQL-Dump-Datei in eine Datenbank importieren. |
| − | < | + | |
| − | + | '''Warnung:''' Ein Import verändert die Zieldatenbank. Vorhandene Tabellen und Daten können abhängig vom Inhalt des Dumps überschrieben oder gelöscht werden. Erstellen Sie vorher ein aktuelles Backup und testen Sie den Ablauf nach Möglichkeit in einer getrennten Testdatenbank. | |
| − | < | + | |
| − | + | == Voraussetzungen == | |
| − | < | + | |
| − | < | + | * SSH-Zugang zum Zielserver |
| − | < | + | * vorhandene und geprüfte Dump-Datei |
| − | < | + | * Datenbankname und Datenbankbenutzer des Zielsystems |
| − | + | * ausreichende Berechtigungen zum Erstellen und Ändern der enthaltenen Objekte | |
| − | [[Category: | + | * Wartungsfenster für Anwendungen, die während des Imports auf die Datenbank zugreifen |
| + | |||
| + | == Dump-Datei vor dem Import prüfen == | ||
| + | |||
| + | <pre>ls -lh DB_NAME.sql | ||
| + | file DB_NAME.sql | ||
| + | grep -m 5 -E '^(CREATE DATABASE|USE )' DB_NAME.sql</pre> | ||
| + | |||
| + | Der letzte Befehl zeigt, ob der Dump selbst eine Datenbank anlegt oder auswählt. | ||
| + | |||
| + | == Import in MariaDB == | ||
| + | |||
| + | Wenn die Zieldatenbank bereits existiert und der Dump nicht selbst per <code>USE</code> umschaltet: | ||
| + | |||
| + | <pre>mariadb --user=DB_BENUTZER --password DB_NAME < DB_NAME.sql</pre> | ||
| + | |||
| + | Bei Oracle MySQL verwenden Sie: | ||
| + | |||
| + | <pre>mysql --user=DB_BENUTZER --password DB_NAME < DB_NAME.sql</pre> | ||
| + | |||
| + | Das Passwort wird interaktiv abgefragt und nicht in der Befehlszeile gespeichert. | ||
| + | |||
| + | Enthält der Dump <code>CREATE DATABASE</code> und <code>USE</code>, lassen Sie den Datenbanknamen nur dann weg, wenn der verwendete Benutzer die benötigten Rechte besitzt und die enthaltenen Datenbanknamen ausdrücklich geprüft wurden. | ||
| + | |||
| + | == Komprimierten Dump importieren == | ||
| + | |||
| + | <pre>gzip -dc DB_NAME.sql.gz | mariadb --user=DB_BENUTZER --password DB_NAME</pre> | ||
| + | |||
| + | == Ergebnis prüfen == | ||
| + | |||
| + | Prüfen Sie unmittelbar den Exit-Code mit <code>echo $?</code>. Nur <code>0</code> steht für einen ohne gemeldeten Fehler beendeten Befehl. Kontrollieren Sie anschließend Tabellen und Anwendung: | ||
| + | |||
| + | <pre>mariadb --user=DB_BENUTZER --password --database=DB_NAME --execute='SHOW TABLES;'</pre> | ||
| + | |||
| + | Testen Sie auch Anmeldung, Schreiben und Lesen in der betroffenen Anwendung. | ||
| + | |||
| + | == Wichtige Hinweise == | ||
| + | |||
| + | * Stoppen Sie bei einer Fehlermeldung und prüfen Sie deren erste Ursache. Wiederholen Sie den Import nicht blind mehrfach. | ||
| + | * Achten Sie bei Migrationen auf Datenbankversion, Zeichensatz, Kollation und SQL-Modi. | ||
| + | * Ein Import kann lange laufen. Planen Sie bei großen Datenbanken ein geeignetes Wartungsfenster. | ||
| + | * Speichern Sie Passwörter nicht in der Befehlszeile. | ||
| + | |||
| + | [[Category:VServer und Root Server]] | ||
| + | |||
| + | [[Category:Datenbanken und phpMyAdmin]] | ||
| + | |||
| + | [[Category:Backups und Wiederherstellung]] | ||
Aktuelle Version vom 20. September 2026, 12:16 Uhr
Mit dem Kommandozeilen-Client mariadb beziehungsweise mysql können Sie eine SQL-Dump-Datei in eine Datenbank importieren.
Warnung: Ein Import verändert die Zieldatenbank. Vorhandene Tabellen und Daten können abhängig vom Inhalt des Dumps überschrieben oder gelöscht werden. Erstellen Sie vorher ein aktuelles Backup und testen Sie den Ablauf nach Möglichkeit in einer getrennten Testdatenbank.
Inhaltsverzeichnis
Voraussetzungen
- SSH-Zugang zum Zielserver
- vorhandene und geprüfte Dump-Datei
- Datenbankname und Datenbankbenutzer des Zielsystems
- ausreichende Berechtigungen zum Erstellen und Ändern der enthaltenen Objekte
- Wartungsfenster für Anwendungen, die während des Imports auf die Datenbank zugreifen
Dump-Datei vor dem Import prüfen
ls -lh DB_NAME.sql file DB_NAME.sql grep -m 5 -E '^(CREATE DATABASE|USE )' DB_NAME.sql
Der letzte Befehl zeigt, ob der Dump selbst eine Datenbank anlegt oder auswählt.
Import in MariaDB
Wenn die Zieldatenbank bereits existiert und der Dump nicht selbst per USE umschaltet:
mariadb --user=DB_BENUTZER --password DB_NAME < DB_NAME.sql
Bei Oracle MySQL verwenden Sie:
mysql --user=DB_BENUTZER --password DB_NAME < DB_NAME.sql
Das Passwort wird interaktiv abgefragt und nicht in der Befehlszeile gespeichert.
Enthält der Dump CREATE DATABASE und USE, lassen Sie den Datenbanknamen nur dann weg, wenn der verwendete Benutzer die benötigten Rechte besitzt und die enthaltenen Datenbanknamen ausdrücklich geprüft wurden.
Komprimierten Dump importieren
gzip -dc DB_NAME.sql.gz | mariadb --user=DB_BENUTZER --password DB_NAME
Ergebnis prüfen
Prüfen Sie unmittelbar den Exit-Code mit echo $?. Nur 0 steht für einen ohne gemeldeten Fehler beendeten Befehl. Kontrollieren Sie anschließend Tabellen und Anwendung:
mariadb --user=DB_BENUTZER --password --database=DB_NAME --execute='SHOW TABLES;'
Testen Sie auch Anmeldung, Schreiben und Lesen in der betroffenen Anwendung.
Wichtige Hinweise
- Stoppen Sie bei einer Fehlermeldung und prüfen Sie deren erste Ursache. Wiederholen Sie den Import nicht blind mehrfach.
- Achten Sie bei Migrationen auf Datenbankversion, Zeichensatz, Kollation und SQL-Modi.
- Ein Import kann lange laufen. Planen Sie bei großen Datenbanken ein geeignetes Wartungsfenster.
- Speichern Sie Passwörter nicht in der Befehlszeile.

