MySQL Datenbank per SSH Terminal importieren: Unterschied zwischen den Versionen

Aus HOSTING-STATION55 - Webhosting Wiki / FAQ
Zur Navigation springen Zur Suche springen
(Artikel passenden Kundenkategorien zugeordnet)
 
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
−
<p>Sie können eine MySQL Datenbank per SSH Terminal importieren, in unserem Beispiel wird die MySQL Datenbank importiert.</p>
+
Mit dem Kommandozeilen-Client <code>mariadb</code> beziehungsweise <code>mysql</code> können Sie eine SQL-Dump-Datei in eine Datenbank importieren.
−
<p><strong>SSH Befehl:</strong></p>
+
 
−
<blockquote>
+
'''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.
−
<p>mysql -v -u[BENUTZER] -p [DATENBANK] < [MYSQL-DB.sql]</p>
+
 
−
<br /><hr>
+
== Voraussetzungen ==
−
<p><strong>Beispiel:</strong></p>
+
 
−
<p>mysql -v -u web1 -p usr_web1 < meine-datenbank.sql</p></blockquote>
+
* SSH-Zugang zum Zielserver
−
<p>Nun muss noch das MySQL Passwort der zu importierenden Datenbank eingegeben werden und Sie haben es geschafft.</p>
+
* vorhandene und geprüfte Dump-Datei
−
<p><strong>Hinweis</strong></p>
+
* Datenbankname und Datenbankbenutzer des Zielsystems
−
<p>[BENUTZER], [DATENBANK] und [MYSQL-DB.sql] müssen durch eigene Angaben geändert werden.</p>
+
* ausreichende Berechtigungen zum Erstellen und Ändern der enthaltenen Objekte
−
[[Category:vServer und Root Server]]
+
* 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 &lt; DB_NAME.sql</pre>
 +
 
 +
Bei Oracle MySQL verwenden Sie:
 +
 
 +
<pre>mysql --user=DB_BENUTZER --password DB_NAME &lt; 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.

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.