À partir de la documentation :
Si vous spécifiez la clause DEFINER, vous ne pouvez pas définir la valeur sur un autre utilisateur que le vôtre, sauf si vous disposez du privilège SUPER. Ces règles déterminent les valeurs légales de l'utilisateur DEFINER :
- * Si vous ne disposez pas du privilège SUPER, la seule valeur utilisateur légale est votre propre compte, soit spécifié littéralement, soit en utilisant CURRENT_USER. Vous ne pouvez pas définir le définisseur sur un autre compte.*
- Si vous disposez du privilège SUPER, vous pouvez spécifier n'importe quel nom de compte syntaxiquement légal. Si le compte n'existe pas réellement, un avertissement est généré.
Vérifiez votre compte MySQL, il n'est pas byname
@localhost
.
Solution :
- Créer une nouvelle vue avec la clause DEFINER en utilisant le compte qui a accordé le privilège SUPER.
- N'utilisez pas la clause DEFINER dans CREATE VIEW, dans ce cas MySQL créera la vue DEFINER =CURRENT_USER.