【问题标题】:Why in list of table privileges I can not see my table privileges?为什么在表权限列表中看不到我的表权限?
【发布时间】:2020-05-13 09:26:29
【问题描述】:

我创建了表并将 select 语句授予角色。然后我将角色授予用户。用户可以在我的表上执行选择语句,但他无法通过 SELECT * FROM USER_TAB_PRIVS 看到有关此权限的信息; 人力资源用户在下面的逐步说明:

CREATE TABLE A1 (ID NUMBER);
Table A1 created.

CREATE TABLE A2 (ID NUMBER);
Table A2 created.

CREATE ROLE ROLE1;
Role ROLE1 created.

GRANT SELECT ON A1 TO ROLE1;
Grant succeeded.

GRANT SELECT ON A2 TO ROLE1;
Grant succeeded.

GRANT ROLE1 TO MAX;
Grant succeeded.

然后按用户MAX步数:

SET ROLE ROLE1;
Role ROLE1 succeeded.

SELECT * FROM HR.A1;--successfull

SELECT * FROM USER_TAB_PRIVS;--successful, but no rows

问题出在哪里?谁能澄清一下?

【问题讨论】:

  • 请描述您使用的数据库和数据库版本。表 user_tab_privs 是来自 oracle 字典的表。

标签: sql


【解决方案1】:

用户 MAX 没有表权限,只有角色 ROLE1 的权限。
使用 USER_ROLE_PRIVS 显示这些权限。

user_tab_privs 仅限于已连接/当前用户的权限。

user_tab_privs 是来自 Oracle 字典的表。所以我建议使用 Oracle 数据库。
grant select 之后,您将获得来自user_tab_privs 的条目如果您以用户 HR 的身份连接。如果您使用 dba 用户,则必须查询 dba_tab_privs

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-07
    相关资源
    最近更新 更多