MariaDB 10.2.6 上的“带有递归”语句的“错误 1142(42000):SELECT 命令被拒绝”

Posted

技术标签:

【中文标题】MariaDB 10.2.6 上的“带有递归”语句的“错误 1142(42000):SELECT 命令被拒绝”【英文标题】:"ERROR 1142 (42000): SELECT command denied" for 'with recursive' statement on MariaDB 10.2.6 【发布时间】:2018-01-12 14:27:34 【问题描述】:

我正在使用 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 语句工作(不使用授予所有权限)?

【问题讨论】:

【参考方案1】:

这似乎是一个错误(更有可能),或者至少是文档缺陷。它现在已归档为 https://jira.mariadb.org/browse/MDEV-13453 ,您可以在那里跟踪进一步的进展,如果您有什么要补充的,请发表评论。

作为一种解决方法,您可以将SELECT ON vblpso.* 授予用户,假设vblpso 是用户执行查询时的默认数据库。

【讨论】:

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

以上是关于MariaDB 10.2.6 上的“带有递归”语句的“错误 1142(42000):SELECT 命令被拒绝”的主要内容,如果未能解决你的问题,请参考以下文章

MariaDB安装

安装mariadb和apache

RHEL7.3编译安装mariadb10.2.6

安装MariaDB和Apache

20180227安装mariadb,apache

Linux-MariaDB安装