Zum Inhalt springen

MySQL-Fehler 1227 beim Import beheben

Zuletzt geprüft

Wenn der Import eines MySQL-Dumps mit Fehler 1227 abbricht, enthält der Dump VIEWS Gespeicherte Datenbank-Abfragen, die sich wie virtuelle Tabellen verhalten. Jede VIEW hat einen DEFINER — den Benutzer, mit dessen Rechten sie läuft. mit dem Namen eines fremden Datenbank-Benutzers. Dein Benutzer darf diese DEFINER-Anweisungen nicht anlegen — sie müssen vor dem Import aus dem Dump entfernt werden.

Die vollständige Fehlermeldung sieht so aus:

ERROR 1227 (42000) at line 1075: Access denied; you need (at least one of)
the SUPER, SET USER privilege(s) for this operation

Typischer Auslöser: Der Dump stammt von einem anderen Server oder Account (Migration, Agentur-Übergabe) — die DEFINER-Einträge verweisen auf Benutzer, die es bei dir nicht gibt.

  1. Verbinde dich per SSH und wechsle in den Ordner mit dem Dump.
  2. Entferne die DEFINER-Anweisungen — DATEI.SQL ersetzen:
    Terminal-Fenster
    sed 's/\sDEFINER=`[^`]*`@`[^`]*`//g' -i DATEI.SQL
    Je nach Dateigröße dauert das Umschreiben einen Moment.
  3. Importiere den korrigierten Dump direkt im Anschluss:
    Terminal-Fenster
    mysql -u DBBENUTZER -p DBNAME < DATEI.SQL

Ohne DEFINER-Angabe legt MySQL die VIEWS mit deinem importierenden Benutzer als Eigentümer an — genau das gewünschte Verhalten beim Umzug in einen anderen Account.

Wenn der Import nach dem Bereinigen weiter abbricht: Ticket im Kundencenter öffnen. Nenn die Zeilennummer aus der Fehlermeldung und die betroffene Anweisung (sed -n 'ZEILEp' DATEI.SQL zeigt sie dir).