2012-11-21 41 views
8

我通過SQL標籤試圖phpMyAdmin的範圍內創建/導入這樣的視圖中創建視圖,而不SUPER特權:在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); 

我得到這個錯誤:

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

我可以沒有在我的託管公司獲得SUPER特權,那麼無論如何要解決這個問題?

在此先感謝:-)

+0

不,你無法繞過那個。 –

+0

我相信可以做的另一種方法是在您使用的數據庫中創建一個測試視圖。導出測試視圖並查看用戶名並使用它。 – madi

+0

檢查定義者,除非明確需要,否則不應該是'username @ localhost',而是'username @%' –

回答

11

從文檔:

如果指定了DEFINER子句,你不能,除非你有SUPER權限的值設置爲任何用戶,但你自己。這些規則決定的法律定義者用戶值:

  • *如果你沒有SUPER權限,只有合法用戶價值是你自己的帳號,無論是字面規定或使用CURRENT_USER。您不能將定義者設置爲某個其他帳戶。*
  • 如果您擁有SUPER權限,則可以指定任何語法上合法的帳戶名稱。如果該帳戶實際上不存在,則會生成警告。

檢查你的MySQL帳戶,它不是byname @localhost

解決方案:

  • 創建使用,有超級特權授予帳戶DEFINER子句新的看法。
  • 不要在CREATE VIEW中使用DEFINER子句,在這種情況下,MySQL將創建視圖DEFINER = CURRENT_USER。
+0

簡而言之,除非明確需要,定義者不應該是'username @ localhost',而是'username @%' –