我在MaxDb数据库中创建了一个新用户。我分配了一个角色,可以访问roleprivileges中的所有表,但是用户看不到这些表。
如果我直接为tableprivileges中的表分配权限,则用户可以访问这些表。
该角色具有访问权限,其他用户已分配此角色,他们会看到所有表格。
什么可能失败?
答案 0 :(得分:1)
今天我第一次听说过MaxDB(什么是无知的,呃?)。我不确定你为什么用“Oracle”标签标记你的问题;谷歌称MaxDB<>甲骨文。
无论如何:这听起来像是Oracle PL / SQL中的常见的问题,其中通过角色获得的权限不起作用,但必须直接授予用户。
说“其他用户已分配此角色并且他们看到了所有表”,您确定他们也没有授予直接权限吗?
答案 1 :(得分:1)
假设这确实是针对MaxDB,而不是针对Oracle:
与特权相反,需要为用户会话激活角色。分配是不够的。这是通过命令SET ROLE <role>
完成的。
对于每个新会话,还可以使用以下命令将角色默认激活:
ALTER USER <user> DEFAULT ROLE <role>
。
您还可以激活分配给用户的所有角色,如下所示:
ALTER USER <user> DEFAULT ROLE ALL
。