2014-10-29 37 views
0

我有一個MySQL 5.0數據庫定義爲view權限錯誤運行EXPLAIN對MySQL視圖

CREATE OR REPLACE ALGORITHM=MERGE 
[email protected]'%' SQL SECURITY DEFINER 
VIEW db2.data_view AS SELECT * FROM db1.data_table; 

這是做給的DB2訪問到DB1這單表的用戶,並適用於SELECT查詢:

[[email protected]]> select name from data_view limit 1; 
+----------------+ 
| name   | 
+----------------+ 
| slartibartfast | 
+----------------+ 
1 row in set (0.00 sec) 

然而,當我試着解釋相同的查詢,我得到:

[[email protected]]> explain select name from data_view limit 1; 
ERROR 1345 (HY000): EXPLAIN/SHOW can not be issued; lacking privileges for 
underlying table 

我授予db2用戶該視圖的SHOW VIEW權限,但我得到的EXPLAIN的錯誤相同。

GRANT SHOW VIEW ON `db2`.`data_view` TO 'db2_user'@'%'; 

什麼需要允許用戶訪問視圖,以在其上運行EXPLAIN

回答

1

您正在嘗試explainshow create view不同的查詢。解釋查詢與選擇它(從查看權限角度來討論),因此一個selectprivilege應足以使它

GRANT select, SHOW VIEW ON `db2`.`data_view` TO 'db2_user'@'%'; 
explain select name from data_view limit 1; 
+0

感謝您的回覆。不幸的是,它不能解決問題 - 我看到了同樣的錯誤。 – tcarobruce 2014-11-04 23:23:18

+0

恐怕沒有特定的授權選項來「解釋」mysql中的查詢。那麼即使您將所有選項授予用戶,您是否也會遇到該錯誤? – Payam 2014-11-05 23:35:21

1

注意的是,這裏的行爲出現的MySQL 5.0和5.5之間發生了變化,如所描述在MySQL bug 64198