tca*_*uce 5 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;
Run Code Online (Sandbox Code Playgroud)
这样做是为了让 db2 用户能够访问 db1 中的这个单个表,并且适用于 SELECT 查询:
[db2_user@db2]> select name from data_view limit 1;
+----------------+
| name |
+----------------+
| slartibartfast |
+----------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
然而,当我尝试解释相同的查询时,我得到:
[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
Run Code Online (Sandbox Code Playgroud)
我向 db2 用户授予了SHOW VIEW该视图的权限,但对于EXPLAIN.
GRANT SHOW VIEW ON `db2`.`data_view` TO 'db2_user'@'%';
Run Code Online (Sandbox Code Playgroud)
EXPLAIN允许有权访问视图的用户在其上运行需要什么?
小智 4
您正在尝试与show create viewexplain不同的查询。解释查询与选择它相同(从特权的角度来看),因此特权应该足够了select
GRANT select, SHOW VIEW ON `db2`.`data_view` TO 'db2_user'@'%';
explain select name from data_view limit 1;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7908 次 |
| 最近记录: |