Z dokumentace:
Pokud zadáte klauzuli DEFINER, nemůžete nastavit hodnotu žádnému uživateli kromě svého, pokud nemáte oprávnění SUPER. Tato pravidla určují legální uživatelské hodnoty DEFINER:
- *Pokud nemáte oprávnění SUPER, jedinou legální uživatelskou hodnotou je váš vlastní účet, buď zadaný doslovně, nebo pomocí CURRENT_USER. Definovač nelze nastavit na jiný účet.*
- Pokud máte oprávnění SUPER, můžete zadat jakýkoli syntakticky legální název účtu. Pokud účet ve skutečnosti neexistuje, vygeneruje se varování.
Zkontrolujte svůj MySQL účet, není byname
@localhost
.
Řešení:
- Vytvořte nový pohled s klauzulí DEFINER pomocí účtu, kterému bylo uděleno oprávnění SUPER.
- Nepoužívejte klauzuli DEFINER v CREATE VIEW, v tomto případě MySQL vytvoří pohled DEFINER =CURRENT_USER.