我正在使用MariaDB 10.2.6。使用root用户运行语句时,它可以正常工作。但是,如果我与另一个用户(访问受限)一起尝试它,则表示我没有权限在动态生成的视图上执行SELECT。我无法将SELECT显式授予该表,因为它不存在。
这是WITH RECURSIVE声明:
with recursive hierarchy (id, parent_department_id) as
(
SELECT id, parent_department_id
from department
where parent_company_id = 1
union all
select e.id, e.parent_department_id
from department e
join hierarchy h ON e.parent_department_id = h.id
)
select e.*
from hierarchy h
join department e ON e.id = h.id;
错误:
ERROR 1142 (42000): SELECT command denied to user 'aclapi'@'localhost' for table 'hierarchy'
当我以root身份登录并尝试将层次结构上的SELECT授予用户时:
ERROR 1146 (42S02): Table 'vblpso.hierarchy' doesn't exist
我想如何授予允许WITH RECURSIVE语句工作的权限(不使用grant all priviges)?
答案 0 :(得分:2)
它似乎是一个错误(更有可能),或者至少是文档缺陷。它现在已经归档为https://jira.mariadb.org/browse/MDEV-13453,您可以在那里跟踪进一步的进展并评论是否有要添加的内容。
要获得解决方法,您可以向用户授予SELECT ON vblpso.*
,假设用户执行查询时vblpso
是默认数据库。