【发布时间】:2014-12-25 12:02:16
【问题描述】:
我在 MySQL 5.0 数据库中定义了一个view:
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 用户授予了视图的 SHOW VIEW 权限,但对于 EXPLAIN,我得到了同样的错误。
GRANT SHOW VIEW ON `db2`.`data_view` TO 'db2_user'@'%';
需要什么才能允许有权访问视图的用户在其上运行EXPLAIN?
【问题讨论】:
标签: mysql database database-permissions