Uit de documentatie:
Als u de DEFINER-clausule opgeeft, kunt u de waarde niet op een andere gebruiker instellen dan op uw eigen, tenzij u het SUPER-privilege hebt. Deze regels bepalen de wettelijke DEFINER-gebruikerswaarden:
- *Als u niet over het SUPER-privilege beschikt, is de enige legale gebruikerswaarde uw eigen account, ofwel letterlijk gespecificeerd of door CURRENT_USER te gebruiken. U kunt de definitie niet op een ander account instellen.*
- Als je het SUPER-privilege hebt, kun je elke syntactisch legale accountnaam opgeven. Als het account niet echt bestaat, wordt er een waarschuwing gegenereerd.
Controleer uw MySQL-account, het is niet byname
@localhost
.
Oplossingen:
- Maak een nieuwe weergave met DEFINER-clausule met behulp van een account dat is toegekend met SUPER-privilege.
- Gebruik geen DEFINER-clausule in CREATE VIEW, in dit geval zal MySQL de view DEFINER =CURRENT_USER creëren.