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 operationTypischer 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.
- Verbinde dich per SSH und wechsle in den Ordner mit dem Dump.
- Entferne die
DEFINER-Anweisungen —DATEI.SQLersetzen:Je nach Dateigröße dauert das Umschreiben einen Moment.Terminal-Fenster sed 's/\sDEFINER=`[^`]*`@`[^`]*`//g' -i DATEI.SQL - 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.
Verwandte Artikel
Abschnitt betitelt „Verwandte Artikel“- MySQL-Datenbank sichern (Export) — saubere Dumps erstellen.
- MySQL-Fehler 1045: Access denied beheben — wenn schon die Verbindung scheitert.
- SSH-Zugang einrichten und verbinden — Voraussetzung für den
sed-Befehl.
Du kommst nicht weiter?
Abschnitt betitelt „Du kommst nicht weiter?“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).