Z dokumentacji:
Jeśli określisz klauzulę DEFINER, nie możesz ustawić wartości dla żadnego użytkownika poza swoim własnym, chyba że masz uprawnienie SUPER. Te reguły określają legalne wartości użytkownika DFINER:
- *Jeśli nie masz uprawnienia SUPER, jedyną legalną wartością użytkownika jest Twoje własne konto, określone dosłownie lub przy użyciu CURRENT_USER. Nie możesz ustawić definiującego na inne konto.*
- Jeśli masz uprawnienie SUPER, możesz określić dowolną syntaktycznie prawidłową nazwę konta. Jeśli konto w rzeczywistości nie istnieje, generowane jest ostrzeżenie.
Sprawdź swoje konto MySQL, nie jest to byname
@localhost
.
Rozwiązania:
- Utwórz nowy widok z klauzulą DEFINIER, korzystając z konta, któremu przyznano uprawnienie SUPER.
- Nie używaj klauzuli DEFINER w CREATE VIEW, w tym przypadku MySQL utworzy widok DEFINER =CURRENT_USER.