“错误1142(42000):在MariaDB 10.2.6上使用递归'语句拒绝SELECT命令”for“

时间:2017-08-04 15:18:50

标签: mariadb common-table-expression

我正在使用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)?

1 个答案:

答案 0 :(得分:2)

它似乎是一个错误(更有可能),或者至少是文档缺陷。它现在已经归档为https://jira.mariadb.org/browse/MDEV-13453,您可以在那里跟踪进一步的进展并评论是否有要添加的内容。

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