为什么在表权限列表中我看不到我的表权限?

  • 本文关键字:权限 看不到 我看 列表 sql
  • 更新时间 :
  • 英文 :


我创建了表并将 select 语句授予角色。然后,我将角色授予用户。用户可以在我的表上执行 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

问题出在哪里?惠能澄清吗?

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

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

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

最新更新