Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MySQL视图上运行解释时发生权限错误_Mysql_Database_Database Permissions - Fatal编程技术网

在MySQL视图上运行解释时发生权限错误

在MySQL视图上运行解释时发生权限错误,mysql,database,database-permissions,Mysql,Database,Database Permissions,我在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; +-----

我在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用户授予了视图的SHOW VIEW特权,但EXPLAIN的错误与此相同

允许具有视图访问权限的用户在视图上运行EXPLAIN需要什么?

您试图解释的查询不同于。解释一个查询和从特权的角度选择它是一样的,因此选择就足够了

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

请注意,这里的行为似乎在MySQL 5.0和5.5之间发生了变化,如中所述。

感谢您的回复。不幸的是,它并没有解决这个问题——我看到了同样的错误。我担心在mysql中没有特别的grant选项来解释查询。那么,即使您将所有选项授予用户,您是否也会收到该错误?
GRANT select, SHOW VIEW ON `db2`.`data_view` TO 'db2_user'@'%';
explain select name from data_view limit 1;