Dalla documentazione:
Se specifichi la clausola DEFINER, non puoi impostare il valore su nessun utente tranne il tuo a meno che tu non disponga del privilegio SUPER. Queste regole determinano i valori utente di DEFINER legale:
- *Se non si dispone del privilegio SUPER, l'unico valore utente legale è il proprio account, specificato letteralmente o utilizzando CURRENT_USER. Non è possibile impostare il definitore su un altro account.*
- Se hai il privilegio SUPER, puoi specificare qualsiasi nome di account sintatticamente legale. Se l'account non esiste effettivamente, viene generato un avviso.
Controlla il tuo account MySQL, non è byname
@localhost
.
Soluzioni:
- Crea una nuova vista con la clausola DEFINER utilizzando l'account concesso con privilegio SUPER.
- Non utilizzare la clausola DEFINER in CREATE VIEW, in questo caso MySQL creerà la vista DEFINER =CURRENT_USER.