Zurück

Fehler beim Importieren einer Datenbank

4 Min Lesedauer · Aktualisiert am 04.09.2023

Du möchtest eine Datenbank importieren, erhältst dabei aber eine Fehlermeldung? Wir beschreiben in diesem Artikel mögliche Fehler, die beim Import über phpMyAdmin auftreten können, was es mit dem MySQL-User auf sich hat und wie du deine Datenbank trotzdem importieren kannst.

Berechtigung SUPER wird benötigt

Beinhaltet der zu importierende Datenbank-Dump Views, kann es beim Import zu folgender Fehlermeldung kommen:

#1227 - Kein Zugriff. Hierfür wird die Berechtigung SUPER benötigt
Fehlermeldung bei fehlender SUPER-Berechtigung
Fehlermeldung bei fehlender SUPER-Berechtigung

Beim Erstellen einer View wird der aktuelle MySQL-User als DEFINER mitgegeben. Wird die Datenbank importiert, muss somit der MySQL-User der View mit jenem der zu importierenden Datenbank übereinstimmen, was in der Regel ohne SUPER-Berechtigung nicht der Fall ist.

Damit der Import trotzdem funktioniert, muss der MySQL-User manuell im Datenbank-Dump angepasst werden. Wir beschreiben das Vorgehen im Abschnitt «MySQL-User vor dem Import manuell anpassen».

Prozeduren und Funktionen werden nicht importiert

Enthält eine zu exportierende Datenbank Prozeduren oder Funktionen, werden diese über das phpMyAdmin nur exportiert, wenn der MySQL-User noch derselbe ist wie jener zum Zeitpunkt der Erstellung. Du kannst dies einfach überprüfen, indem du die Prozeduren anzeigen lässt. Wenn der MySQL-User noch derselbe ist, lassen sich die Prozeduren bearbeiten. Ansonsten wird die Bearbeitung verhindert.

Anzeige Prozeduren im phpMyAdmin
Anzeige Prozeduren im phpMyAdmin

Indem du die Datenbank im my.cyon über «Datenbank» > «MySQL» gemäss unserer Anleitung exportierst, werden diese in jedem Fall im Datenbank-Dump mit exportiert, da der Export direkt von unserem System mit SUPER-Berechtigungen aus erfolgt.

Danach kann der Datenbank-Dump wie im Abschnitt «MySQL-User vor dem Import manuell anpassen» angepasst und importiert werden.

MySQL-User in phpMyAdmin

Wenn du phpMyAdmin über dein my.cyon öffnest, wird ein MySQL-User erstellt, welcher sich aus einem zufällig erstellten Namen und der IP-Adresse deines Internet-Anschlusses zusammensetzt. Der aktuelle «Benutzer» wird dir im phpMyAdmin auf der Startseite im Abschnitt «Datenbank-Server» angezeigt.

Startseite in phpMyAdmin
Startseite in phpMyAdmin

Sobald du dich aus dem my.cyon abmeldest oder das Webhosting wechselst, wird beim nächsten Aufruf von phpMyAdmin ein neuer MySQL-User generiert.

MySQL-User auf einem Shared-Hosting haben aus Sicherheitsgründen keine SUPER-Berechtigungen. Somit kann bei Views oder Funktionen der Wert DEFINER nicht nachträglich angepasst werden. Du kannst jedoch den MySQL-User vor dem Import im Datenbank-Dump anpassen, wie im nächsten Abschnitt beschrieben.

MySQL-User vor dem Import manuell anpassen

Beim Import von Views, Prozeduren oder Funktionen muss vor dem Import sichergestellt werden, dass der im Datenbank-Dump verwendete MySQL-User mit jenem, welcher aktuell im phpMyAdmin angezeigt wird, übereinstimmt. Eine Erklärung dazu findest du im obigen Abschnitt «MySQL-User in phpMyAdmin».

1
Exportiere die Datenbank als SQL-Datei. Ist die Datenbank auf einem cyon-Webhosting, folge dem Vorgehen im Artikel «Datenbank exportieren» im Abschnitt «my.cyon» um Prozeduren oder Funktionen zu exportieren. Um eine Datenbank mit Views zu exportieren, folge hingegen der Beschreibung im Abschnitt «phpMyAdmin».
2

Öffne die SQL-Datei mit dem Text-Editor deiner Wahl. Wurde die Datenbank als Gzip-File herunter geladen, entpacke dieses zuvor.

Suche in der Datei nach DEFINER. Hier siehst du den jeweiligen MySQL-User, mit welchem eine View, eine Prozedur oder Funktion erstellt wurde. Als Beispiel sieht der Eintrag für eine View wie folgt aus:

CREATE ALGORITHM=UNDEFINED
DEFINER=`cpses_oldg41jt2a`@`localhost` SQL SECURITY DEFINER VIEW `test_view` ...	
Melde dich im my.cyon an, wähle das Webhosting aus, wo du die Datenbank importieren möchtest und öffne phpMyAdmin. Kopiere den aktuellen MySQL-User. Im Abschnitt «MySQL-User in phpMyAdmin» beschreiben wir, wo dieser angezeigt wird.
4

Ersetze bei allen Suchresultaten nach DEFINER den im Datenbank-Dump erwähnten MySQL-User mit dem zuvor kopierten.

CREATE ALGORITHM=UNDEFINED
DEFINER=`cpses_olmfzsuw0f`@`localhost` SQL SECURITY DEFINER VIEW `test_view` ...
5
Speichere den Datenbank-Dump und importiere diesen über das phpMyAdmin gemäss unserer Anleitung «Datenbank importieren».
Kategorien
Datenbanken erstellen und verwalten
Artikel teilen
E-Mail WhatsApp

Was dir auch helfen könnte

Verwandte Artikel

Du hast noch Fragen?

Wir beantworten sie dir gerne persönlich.

Kontaktiere uns