我有一个 view在 MySQL 5.0 数据库中定义为:
CREATE OR REPLACE ALGORITHM=MERGE
DEFINER=db1_user@'%' SQL SECURITY DEFINER
VIEW db2.data_view AS SELECT * FROM db1.data_table;
这样做是为了让 db2 的用户能够访问 db1 中的这个单个表,并且适用于 SELECT 查询:
[db2_user@db2]> select name from data_view limit 1;
+----------------+
| name |
+----------------+
| slartibartfast |
+----------------+
1 row in set (0.00 sec)
但是,当我尝试解释同一个查询时,我得到:
[db2_user@db2]> explain select name from data_view limit 1;
ERROR 1345 (HY000): EXPLAIN/SHOW can not be issued; lacking privileges for
underlying table
我为 db2 用户授予了 View 的 SHOW VIEW
权限,但是对于 EXPLAIN
我得到了同样的错误。
GRANT SHOW VIEW ON `db2`.`data_view` TO 'db2_user'@'%';
允许有权访问 View 的用户在其上运行 EXPLAIN
需要什么?
最佳答案
您正在尝试解释
不同于show create view 的查询.解释一个查询与选择它是一样的(从特权的角度来看),因此 select
privilege足够了
GRANT select, SHOW VIEW ON `db2`.`data_view` TO 'db2_user'@'%';
explain select name from data_view limit 1;
关于mysql - 在 MySQL VIEW 上运行 EXPLAIN 时出现权限错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26636182/