2012-11-21 8 views
8

próbuję poprzez zakładkę SQL w phpmyadmin do tworzenia/import widok takiego:Tworzenie widoku bez SUPER przywilejów w phpMyAdmin

CREATE ALGORITHM=UNDEFINED DEFINER=`byname`@`localhost` SQL SECURITY DEFINER VIEW `wr_averages` AS select `nf_users`.`id` AS `id`,(`nf_users`.`points`/`nf_users`.`played`) AS `average_points` from `nf_users` where (`nf_users`.`played` > 24); 

otrzymuję ten błąd:

#1227 - Access denied; you need the SUPER privilege for this operation 

mogę nie dostaję SUPER przywilejów w mojej firmie hostingowej, więc czy mimo to można to obejść?

góry dzięki :-)

+0

Nie, nie można tego obejść. –

+0

Innym sposobem, który moim zdaniem można zrobić, jest utworzenie widoku testowego w bazie danych, z której korzystasz. Wyeksportuj widok testowy i zobacz nazwę użytkownika i użyj go. – madi

+0

Sprawdź definicję, nie powinna być "nazwa_użytkownika @ localhost", chyba że jest to wyraźnie potrzebne, ale "nazwa_użytkownika @%" –

Odpowiedz

11

Z dokumentacji:

przypadku określenia klauzuli Definer, nie można ustawić wartość każdego użytkownika, ale własne, chyba że masz przywilej Super. Zasady te określają prawa wartości użytkownika DEFINER:

  • * Jeśli nie masz SUPER przywilej, jedyny legalny użytkownik jest wartość własne konto, albo podane dosłownie lub za pomocą current_user. Nie możesz ustawić zdefiniowanego na innym koncie. *
  • Jeśli masz uprawnienie SUPER, możesz podać dowolną nazwę konta składającą się z syntaktycznie. Jeśli konto nie istnieje, generowane jest ostrzeżenie.

Sprawdź swoje konto MySQL, to nie jest byname @localhost.

Solutions:

  • Utwórz nowy widok z klauzulą ​​DEFINER używając konta udzielonej z SUPER przywilej.
  • Nie używaj klauzuli DEFINER w CREATE VIEW, w tym przypadku MySQL utworzy widok DEFINER = CURRENT_USER.
+0

W prostszy sposób, definicja nie powinna mieć nazwy "nazwa_użytkownika @ localhost", chyba że jest to wyraźnie potrzebne, ale "nazwa_użytkownika @%" –

Powiązane problemy