Aus der Dokumentation:
Wenn Sie die DEFINER-Klausel angeben, können Sie den Wert nur auf Ihren eigenen Benutzer setzen, es sei denn, Sie haben die SUPER-Berechtigung. Diese Regeln bestimmen die legalen DEFINER-Benutzerwerte:
- *Wenn Sie nicht über das SUPER-Privileg verfügen, ist der einzige gültige Benutzerwert Ihr eigenes Konto, entweder wörtlich angegeben oder durch Verwendung von CURRENT_USER. Sie können den Definierer nicht auf ein anderes Konto setzen.*
- Wenn Sie das SUPER-Privileg haben, können Sie jeden syntaktisch gültigen Kontonamen angeben. Wenn das Konto tatsächlich nicht existiert, wird eine Warnung generiert.
Überprüfen Sie Ihr MySQL-Konto, es ist nicht byname
@localhost
.
Lösungen:
- Erstellen Sie eine neue Ansicht mit DEFINER-Klausel unter Verwendung eines Kontos, das mit SUPER-Berechtigung gewährt wurde.
- Verwenden Sie die DEFINER-Klausel nicht in CREATE VIEW, in diesem Fall erstellt MySQL die Ansicht DEFINER =CURRENT_USER.