如何授予生成器语法的使用权限



我通常不是使用Firebird语言的人,但我必须修复对生成器的访问才能继续工作。在我的脚本中有一行:set generator order_gen to 0已经不起作用了。

我正在尝试:GRANT USAGE ON GENERATOR ORDER_GEN TO USER MAHE,但我仍然得到错误...no permission for ALTER access to GENERATOR ORDER_GEN ...

我应该授予不同的权限来设置生成器,还是我在这里没有使用正确的语法?

假设Firebird 3.0或更高版本,USAGE权限仅授予使用NEXT VALUE FOR <sequence>GEN_ID(<sequence>, <n>)的权限。如文件中所述:

对于序列(生成器(,USAGE权限仅授予使用CCD_ 8函数或CCD_SET GENERATOR语句是ALTER SEQUENCE …​ RESTART WITH …​的同义词,被视为DDL语句依据默认情况下,只有序列的所有者和管理员具有此类操作的权利。设定任何初始值的权利可以使用GRANT ALTER ANY SEQUENCE授予序列,而不是推荐给普通用户。

如前所述,GRANT ALTER ANY SEQUENCE应该是最后的手段。根据要解决的实际问题,您还可以调用gen_id(order_gen, 0 - gen_id(order_gen, 0))(例如select gen_id(order_gen, 0 - gen_id(order_gen, 0)) from rdb$database((这是一个漏洞/解决方法,另请参阅序列(生成器(的ALTER和USAGE权限之间的不一致性(。在火鸟问题跟踪器中(。

或者,您应该要求数据库管理员执行此脚本/语句,或者——如果您自己拥有RDB$ADMIN权限——确保在连接到数据库时指定该角色(如果您没有明确指定该角色,则不会获得管理员权限(。

相关内容

  • 没有找到相关文章

最新更新