我创建了该表,并将select语句授予该角色。然后,我将该角色授予user。用户可以在我的表上执行select语句,但无法通过SELECT * FROM USER_TAB_PRIVS查看有关此权限的信息;按HR用户分步操作如下:
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.然后按用户最大步数:
SET ROLE ROLE1;
Role ROLE1 succeeded.
SELECT * FROM HR.A1;--successfull
SELECT * FROM USER_TAB_PRIVS;--successful, but no rows问题出在哪里?我可以澄清什么?
发布于 2020-06-05 02:06:47
用户MAX没有表权限,只有角色ROLE1的权限。
使用USER_ROLE_PRIVS显示这些权限。
user_tab_privs仅限于已连接/当前用户的权限。
表user_tab_privs是来自Oracle字典的表。因此,我建议使用Oracle数据库。
在grant select之后,如果您以用户HR的身份连接,您将从user_tab_privs 获得一个条目。如果您使用dba用户,则必须查询dba_tab_privs。
https://stackoverflow.com/questions/61770914
复制相似问题