【问题标题】:In Firebird database how do I grant a role to a user with the grant option?在 Firebird 数据库中,如何使用授权选项向用户授予角色?
【发布时间】:2016-09-16 14:14:09
【问题描述】:

我有一个用户需要添加授权选项。我尝试了以下命令;

grant myrole to myuser with grant option

但是我得到了错误;

Dynamic SQL Error SQL error code = -104 Token unknown - line 1, column 29 grant

我也尝试过撤销该角色,然后再次授予该角色。但我得到了同样的错误。

我只能在没有授予选项的情况下授予角色。我已经检查了手册的语法是否正确,但我看不出我做错了什么。

【问题讨论】:

  • 嗯,似乎取决于您在手册中的确切位置。但是,即使使用关键字 USER,它仍然不起作用。
  • 您使用的是哪个 Firebird 版本?

标签: sql database firebird roles


【解决方案1】:

Granting privileges 似乎允许使用'with grant option'

GRANT {
      <privileges> ON [TABLE] {tablename | viewname} 
      | EXECUTE ON PROCEDURE procname
          }
    TO <grantee_list>
      [WITH GRANT OPTION]} | [{GRANTED BY | AS} [USER] grantor];
    

但授予角色似乎不允许“使用授予选项”。它具有“with admin option”,这就是为什么我认为在“with”一词之后遇到“grant”一词而不是“admin”时会发生错误。

GRANT <role_granted>
TO <role_grantee_list> [WITH ADMIN OPTION]
[{GRANTED BY | AS} [USER] grantor]

【讨论】:

  • 我认为你需要改写这个答案,因为你可以做到(正如你答案的第二部分所暗示的那样)。
  • @MarkRotteveel 我不确定“带管理员选项”是否给了他他想要的东西,但从你的回答中我看到确实如此。所以我删除了答案中误导性的第一句话。
  • 是的,目前确实如此;这在未来可能会改变,因为我创建了票 CORE-5248
【解决方案2】:

GRANT 子句with grant option 仅适用于权限,不适用于角色。对于需要使用with admin option的角色。

GRANT <role_granted>
TO <role_grantee_list> [WITH ADMIN OPTION]
[{GRANTED BY | AS} [USER] grantor]

可选的WITH ADMIN OPTION 子句允许用户列表中指定的用户将指定的角色授予其他用户。

【讨论】:

  • 终于开始测试了。最初它不起作用,但我必须先从用户那里撤消所有内容,然后它才起作用。
猜你喜欢
  • 1970-01-01
  • 2017-01-28
  • 1970-01-01
  • 2019-04-13
  • 2019-05-21
  • 1970-01-01
  • 2020-04-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多