Beim Umzug einer Website, bei der Aktivierung einer Entwicklerkopie oder beim Wiederherstellen eines alten Backups muss die Datenbank als SQL-Datei exportiert und importiert werden. Auf cPanel-Hosting-Paketen dient hierfür phpMyAdmin; bei größeren Datenbanken wird, sofern Ihr Paket SSH-Zugriff beinhaltet, der Befehlszeilen-mysql-Client verwendet. Auf unseren Webhosting-Servern läuft MariaDB 10.11, das mit MySQL kompatibel ist.
Die Benutzeroberfläche von phpMyAdmin wird allgemeiner in unserem Blogbeitrag zu den Grundlagen von phpMyAdmin erläutert.
phpMyAdmin öffnen
Melden Sie sich bei cPanel an und klicken Sie in der Gruppe Datenbanken auf das Symbol phpMyAdmin. phpMyAdmin öffnet sich ohne eigenes Passwort mit Ihrem cPanel-Konto und zeigt links alle Datenbanken des Kontos an.
Datenbank exportieren
- Klicken Sie in der Liste auf der linken Seite auf den Namen der zu exportierenden Datenbank und anschließend oben auf die Registerkarte Exportieren.
- Die Exportmethode kann auf Schnell – nur notwendige Optionen anzeigen bleiben, das Format auf SQL.
- Klicken Sie auf die Schaltfläche Exportieren. Der Browser lädt die Datei mit der Endung
.sqlherunter, deren Name dem Namen der Datenbank entspricht.
Bei einer größeren Datenbank wählen Sie Angepasst – zeige alle möglichen Optionen an und unter Ausgabe in der Liste Komprimierung den Eintrag GZip-komprimiert: Eine SQL-Textdatei schrumpft komprimiert meist auf einen Bruchteil, und phpMyAdmin kann sie auch so wieder importieren. Im angepassten Modus können Sie auch einzelne Tabellen auslassen.
Wenn Sie die Datenbank in eine Datenbank mit anderem Namen importieren (in cPanel beginnt jeder Datenbankname mit dem Benutzernamen), lassen Sie im angepassten Modus den Schalter CREATE DATABASE / USE-Befehl hinzufügen ausgeschaltet. Das ist die Standardeinstellung.
aWh erstellt zudem automatische Backups des Hostings; die Wiederherstellung eines früheren Zustands einer Datenbank wird im Artikel zur JetBackup-Wiederherstellung erläutert.
Importieren einer SQL-Sicherung
Beim Importieren wird der Inhalt der Datei in eine bereits vorhandene Datenbank geladen. Falls Sie noch keine Datenbank haben, legen Sie diese bitte zunächst zusammen mit einem Benutzer an (Erstellen einer Datenbank und eines Benutzers in cPanel).
- Klicken Sie in der Liste auf der linken Seite auf die Zieldatenbank und anschließend auf die Registerkarte Importieren.
- Wählen Sie die Sicherung mit der Schaltfläche Datei auswählen aus. Sie können auch eine komprimierte Datei (gzip, bzip2, zip) hochladen, wenn ihr Name auf
.sql.gz,.sql.bz2oder.sql.zipendet. Die Obergrenze für den Upload liegt laut der Angabe (Maximal: 50MiB) bei 50 MB; komprimieren Sie eine größere Sicherung oder importieren Sie sie über SSH (siehe unten). - Zeichencodierung der Datei bleibt auf utf-8, das Format auf SQL.
- Klicken Sie unten auf der Seite auf die Schaltfläche Importieren.
Nach einem erfolgreichen Import erscheint in einem grünen Balken die Meldung „Der Import wurde erfolgreich abgeschlossen, N Abfragen ausgeführt.“, darunter die ausgeführten Befehle.
Achtung: Der grüne Balken erscheint auch dann, wenn beim Import ein Fehler aufgetreten ist. Darunter steht dann ein rotes Feld Fehler mit dem fehlgeschlagenen Befehl und dem Fehlercode nach MySQL meldet:, und der Import ist bei diesem Befehl stehen geblieben. Scrollen Sie deshalb immer durch das ganze Ergebnis. Die häufigsten Fehlercodes finden Sie weiter unten.
Wenn ein umfangreicher Import aufgrund einer Zeitüberschreitung abgebrochen wird, merkt sich phpMyAdmin aufgrund der standardmäßig aktivierten Einstellung Teilweiser Import, bis zu welchem Punkt der Vorgang fortgeschritten war, und setzt ihn nach erneuter Auswahl der Datei an dieser Stelle fort. Sicherer ist jedoch die Verwendung der komprimierten Datei oder von SSH.
Nach dem Laden der WordPress-Datenbank
Wenn Sie die Datenbank einer WordPress-Seite in eine neue Datenbank importiert haben, ändern Sie bitte in der Datei wp-config.php die Werte für DB_NAME, DB_USER und DB_PASSWORD entsprechend den Daten der neuen Datenbank, und stellen Sie sicher, dass $table_prefix mit dem Präfix der importierten Tabellen übereinstimmt. Falls sich auch die Domain geändert hat, ersetzen Sie die alten Adressen bitte mit dem Befehl wp search-replace und nicht mit einem Texteditor in der SQL-Datei. Der gesamte Umzug wird im Artikel über die Migration einer WordPress-Seite beschrieben.
Import einer CSV-Datei in eine Tabelle
Sie können Daten, die Sie aus einer Tabellenkalkulationsanwendung (Excel, LibreOffice Calc, Google Tabellen) im CSV-Format gespeichert haben, in eine bestehende Tabelle importieren.
- Öffnen Sie die Tabelle in der Liste auf der linken Seite und klicken Sie anschließend auf die Registerkarte Importieren.
- Wählen Sie die CSV-Datei aus; das Format muss CSV sein.
- Wenn die erste Zeile der Datei Spaltennamen enthält, tragen Sie in das Feld Diese Anzahl Abfragen (für SQL) überspringen, beginnend von der ersten eine 1 ein. Bei CSV überspringt das die ersten Zeilen der Datei; bleibt der Wert 0, wird auch die Kopfzeile als Datenzeile importiert.
- Unter Formatspezifische Optionen ist der Standardwert des Feldes Spalten getrennt mit ein Komma (
,). Excel speichert CSV-Dateien mit vielen europäischen Ländereinstellungen (etwa Deutsch oder Ungarisch) mit Semikolon (;): Tragen Sie es dann in das Feld ein. - Klicken Sie auf die Schaltfläche Importieren.
Die Reihenfolge der Spalten in der CSV-Datei muss mit der der Spalten in der Tabelle übereinstimmen. Sollte dies nicht der Fall sein oder sollte die Datei weniger Spalten enthalten, geben Sie bitte im Feld Spaltennamen durch Kommas getrennt an, welche CSV-Spalte in welche Tabellenspalte übernommen werden soll. Wenn es vom Tabellenkalkulationsprogramm angeboten wird, speichern Sie die Datei im Format „CSV UTF-8“, da sonst Buchstaben mit Akzenten fehlerhaft angezeigt werden.
Import und Export über SSH
Wenn Ihr Paket SSH-Zugriff umfasst (cP Premium, cP Pro, cP Pro 100), können Sie die SQL-Sicherung auch über den Befehlszeilen-Client mysql (oder den gleichwertigen mariadb) laden. Hier gibt es keine 50-MB-Beschränkung und es kommt zu keiner Zeitüberschreitung, weshalb dies der geeignete Weg für Datenbanken mit einer Größe von mehreren hundert Megabyte ist. Für den Zugriff benötigen Sie einen SSH-Schlüssel; dessen Einrichtung wird im Artikel zum Thema SSH-Schlüssel erläutert.
- Laden Sie die Sicherung per SFTP in das Home-Verzeichnis Ihres Hostings hoch, außerhalb des Ordners
public_html, damit sie nicht über den Browser heruntergeladen werden kann. -
Melden Sie sich per SSH an und importieren Sie die Datei mit dem Datenbankbenutzer. Geben Sie das Passwort bei der Abfrage
Enter password:ein, damit es nicht im Befehlsverlauf gespeichert wird:mysql -u felhasznalo_wp -p felhasznalo_wp < mentes.sqlSie können eine komprimierte Sicherung auch ohne Entpacken importieren:
zcat mentes.sql.gz | mysql -u felhasznalo_wp -p felhasznalo_wp - Wenn der Befehl ohne Meldung zurückkehrt, war das Laden erfolgreich. Im Falle eines Fehlers hält der Client bei der ersten fehlerhaften Anweisung an und gibt den Fehlercode sowie die Zeilennummer aus, beispielsweise
ERROR 1062 (23000) at line 1: Duplicate entry '1' for key 'PRIMARY'.
Der erste Wert felhasznalo_wp ist der Datenbankbenutzername, der zweite der Name der Datenbank; im cPanel beginnen beide mit dem Benutzernamen des Webhosting-Kontos. Der Export erfolgt mit dem Befehl mysqldump:
mysqldump -u felhasznalo_wp -p --single-transaction felhasznalo_wp | gzip > mentes.sql.gz
Der Schalter --single-transaction erstellt eine Sicherung der InnoDB-Tabellen ohne Sperren und in einem einheitlichen Zustand, sodass die Website währenddessen weiterhin funktioniert. Bei WordPress funktionieren die Befehle wp db import und wp db export auf dem Hosting-Server nicht, da die dafür erforderlichen Funktionen in PHP deaktiviert sind; verwenden Sie stattdessen die oben genannten Befehle (WP-CLI auf cPanel-Hosting).
Wenn Sie Daten von Ihrem eigenen Rechner aus mit einem grafischen Programm (HeidiSQL, DBeaver, MySQL Workbench) importieren möchten, müssen Sie den Fernzugriff auf die Datenbank aktivieren.
Häufige Importfehler
| Fehlermeldung | Was ist die Ursache? | Lösung |
|---|---|---|
#1044 - Access denied for user '…' to database '…' |
Zu Beginn der Sicherung befinden sich die Anweisungen CREATE DATABASE und USE mit einem anderen Datenbanknamen, für den das Konto keine Berechtigung besitzt. |
Löschen Sie diese beiden Zeilen aus der Datei und wählen Sie in phpMyAdmin zuerst die Zieldatenbank aus. Lassen Sie beim Export den Schalter CREATE DATABASE / USE-Befehl hinzufügen ausgeschaltet. |
#1273 - Unknown collation: 'utf8mb4_0900_ai_ci' |
Die Sicherung wurde aus MySQL 8 erstellt und verwendet eine Sortierregel (Collation), die MariaDB 10.11 nicht kennt. | Ersetzen Sie in der Datei den Text utf8mb4_0900_ai_ci an allen Stellen durch utf8mb4_unicode_ci. |
#1227 - Access denied; you need (at least one of) the SUPER, SET USER privilege(s) for this operation |
Die Ansichten, Trigger oder gespeicherten Prozeduren sind im Namen eines anderen Benutzers definiert, beispielsweise DEFINER=`root`@`localhost`. |
Löschen Sie die Abschnitte DEFINER=…; das geladene Objekt gehört dann dem importierenden Benutzer. |
#1062 - Doppelter Eintrag '…' für Schlüssel 'PRIMARY' |
In der Tabelle sind bereits Zeilen mit derselben ID vorhanden. | Importieren Sie in eine leere Datenbank oder schalten Sie beim Export DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT / TRIGGER-Befehl hinzufügen ein. |
| Die Datei ist zu groß oder der Upload wird unterbrochen | Die Sicherung ist größer als 50 MB oder das Laden dauert zu lange. | Komprimieren Sie die Datei mit gzip oder importieren Sie sie über SSH. |
Über SSH lassen sich die ersten beiden Ersetzungen jeweils mit einem einzigen Befehl durchführen, wobei die Originaldatei unverändert bleibt:
sed 's/utf8mb4_0900_ai_ci/utf8mb4_unicode_ci/g' mentes.sql > javitott.sql
sed -E 's/DEFINER=`[^`]+`@`[^`]+`//g' mentes.sql > javitott.sql
Importieren Sie die korrigierte Datei anschließend wie gewohnt.





