Magento 2 – Datenbank Import mit fehlenden Rechten abgebrochen

Beim Import eines Datenbank-Exports von einem anderen Server erschien immer der Fehler “ERROR 1227 (42000) at line 15126: Access denied; you need (at least one of) the SUPER privilege(s) for this operation” – schaute man im Dump an dieser Stelle nach, fand man dort

Das Problem war hier der Part “DEFINER=MEINDBUSER@%” (wobei MEINDBUSER natürlich nur als Beispiel zu sehen ist). Hier musste der beim Import verwendete Datenbankuser und in diesem Fall auch localhost hinterlegt werden. Das sah dann so aus

Wichtig war auch die einzelnen Anführungszeichen zu entfernen, dass nur noch MEINDBUSERNEU@localhost dort stand. Anschließend klappte der Import dann problemlos.

Update vom 11.05.2020

Nun stellte sich diese Problematik erneut, diesmal aber nicht ganz so einfach. Der auslösende Part für den Error beim Import der Datenbank war diesmal jener:

Der Definer wurde nun aber sehr häufig -und nicht nur einmal wie beim vorigen Teil- aufgerufen.

Somit gab es zwei Möglichkeiten:

  1. Verhindern, dass beim Backup / Dump der Datenbank dieser Datenbank-User in das Backup-File geschrieben wird ODER
  2. Nachträglich den User aus dem File entfernen und dann importieren.

Für beides gibt es Möglichkeiten. Habe ich die Backup-Datei selber per SSH-Befehl erstellt, kann ich den Befehl ein wenig anpassen und damit erreichen, dass kein konkreter User sondern „Current User“ verwendet wird. Der Befehl wäre dann dieser hier:

Hiermit wird ein Datenbank-Backup erstellt mit dem Namen DATEINAME.sql.gz (es ist also direkt gepackt). Während des Erstellens der Datei werden durch den SED-Befehl die datenbankdefinierten User-Daten gegen die allgemeinen „CURRENT_USER“-Infos ausgetauscht. Somit lässt sich die Datei später importieren. (Um die Datei auf dem Zielserver wieder zu entpacken einfach „gunzip DATEINAME.sql.zip“ eingeben. Wobei ich wahrscheinlich nicht extra erwähnen muss, dass der Name frei vergeben werden kann. Ebenso werden die Platzhlater innerhalb der eckigen Klammern INKL. der Klammern durch die jeweiligen eigenen Daten ersetzt.)

Muss ich aber die fertige SQL-Datei überarbeiten, um sie zu importieren, kann ich dies per SSH mit folgendem Befehl machen und selbiges Ergebnis erhalten wie oben

Zur Sicherheit wird die Datei nicht einfach überschrieben, sondern es wird eine neue Datei erstellt, die den Namen DATEINAMEneu.sql hat.

Published by Covos

Seit 2009 arbeite ich nun intensiv mit Magento. Begonnen habe ich mit der Erstellung und dem Betrieb von B2C-Shops. Ausgeweitet wurde dies durch meine Tätigkeit im Logistik-Sektor. Hieraus entstanden erste spezialisierte B2E-Systeme. Heute arbeite ich tag-täglich mit spannenden B2C-, B2B- und B2E-Projekten und berichte in diesem Blog über Herausforderungen und gebe Insider-Tipps.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.