2017-08-04 20 views
1

我使用MariaDB的10.2.6。当使用root用户运行语句时,它可以工作。但是,如果我用另一个用户(访问权限有限)尝试它,它会失败,说我无法在动态生成的视图上执行SELECT。我不能明确地将SELECT授予该表,因为它不存在。“ERROR 1142(42000):SELECT命令被拒绝” 的 '递归' 声明MariaDB的10.2.6

这里是递推式的语句:

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语句的工作(不使用授予所有privi GES)?

回答

1

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

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

+0

感谢您创建并发布Jira bug报告。我希望这只是一个文档问题。 –

+0

嗯......在10.2.2中适用于我。此外,它在8.0.0上以其他方式失败。 –