&引用;错误1142(42000):选择“命令被拒绝”;对于';使用递归';关于MariaDB 10.2.6的声明

&引用;错误1142(42000):选择“命令被拒绝”;对于';使用递归';关于MariaDB 10.2.6的声明,mariadb,common-table-expression,Mariadb,Common Table Expression,我正在使用MariaDB 10.2.6。当用户使用root用户运行语句时,它会工作。但是,如果我尝试与另一个用户(具有有限的访问权限)一起使用它,它会失败,说我没有权限对动态生成的视图执行选择。我无法显式地将SELECT授予该表,因为它不存在 下面是WITH RECURSIVE语句: with recursive hierarchy (id, parent_department_id) as ( SELECT id, parent_department_id

我正在使用MariaDB 10.2.6。当用户使用root用户运行语句时,它会工作。但是,如果我尝试与另一个用户(具有有限的访问权限)一起使用它,它会失败,说我没有权限对动态生成的视图执行选择。我无法显式地将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 on hierarchy授予用户时:

ERROR 1146 (42S02): Table 'vblpso.hierarchy' doesn't exist
我该如何授予特权以允许WITH RECURSIVE语句工作(而不使用grant all priviges)?

这似乎是一个bug(更有可能),或者至少是一个文档缺陷。它现在已经存档为,您可以在那里跟踪进一步的进展,如果您有什么要补充的话,可以发表评论


对于解决方法,您可以向用户授予
SELECT ON vblpso.*
,假设用户执行查询时
vblpso
是默认数据库。

感谢您创建并发布Jira错误报告。我希望这只是一个文档问题。嗯。。。在10.2.2中对我有效。此外,它在8.0.0上以其他方式失败。