在 Oracle 中找不到分配给创建的角色的权限
Can not find Permissions assigned to created roles in Oracle
我在 SQL dev 中以 SYSTEM 身份登录并执行了以下操作:
ALTER SESSION SET "_ORACLE_SCRIPT" = TRUE;
CREATE TABLE Attendance
(
ID INT ,
NAME NVARCHAR2(300),
CONSTRAINT IdPk PRIMARY KEY (ID)
);
CREATE ROLE DataEntry;
GRANT SELECT, INSERT, UPDATE ON Attendance TO DataEntry;
如何找到分配给DataEntry角色的权限?我已经研究了一段时间,但找到的答案没有用。例如:
select * from ROLE_ROLE_PRIVS;
select * from ROLE_TAB_PRIVS;
select * from ROLE_SYS_PRIVS;
这些语句 return 许多角色,例如:dba、sys、....但我仍然找不到我的 'DataEntry' 角色。谁可以给我解释一下这个?非常感谢。
如果您创建了任何连接为 SYSTEM
的对象,您最好不要这样做。 SYS
和SYSTEM
比较特殊,不要乱用
关于你的问题:
SQL> show user
USER is "SCOTT"
SQL> create role dataentry;
Role created.
SQL> grant select, insert, update on emp to dataentry;
Grant succeeded.
SQL> select * From role_tab_privs;
ROLE OWNER TABLE_NAME COLUMN_NAM PRIVILEGE GRA
---------- ---------- ---------- ---------- ---------- ---
DATAENTRY SCOTT EMP INSERT NO
DATAENTRY SCOTT EMP SELECT NO
DATAENTRY SCOTT EMP UPDATE NO
SQL>
如果你想以特权用户的身份进行这样的查询,那就是dba_tab_privs
:
SQL> show user
USER is "SYS"
SQL> select * From dba_tab_privs where owner = 'SCOTT';
GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRA HIE
------------ ---------- ---------- ---------- ---------- --- ---
MIKE SCOTT DEPT SCOTT DELETE YES NO
DATAENTRY SCOTT EMP SCOTT INSERT NO NO
DATAENTRY SCOTT EMP SCOTT SELECT NO NO
DATAENTRY SCOTT EMP SCOTT UPDATE NO NO
SQL>
由于您标记了 SQLDev...打开视图菜单,select DBA。
添加您的连接。展开,转到安全,Select 角色,打开您的角色。
观察“对象权限”面板。
SQL 开发人员使用此 SQL
获取角色的对象权限
SELECT privilege AS "Object Privilege"
, owner AS "Schema"
, table_name AS "Object"
FROM dba_tab_privs
WHERE grantee = :name -- DATAENTRY
ORDER BY 2
, 3
, 1
我在 SQL dev 中以 SYSTEM 身份登录并执行了以下操作:
ALTER SESSION SET "_ORACLE_SCRIPT" = TRUE;
CREATE TABLE Attendance
(
ID INT ,
NAME NVARCHAR2(300),
CONSTRAINT IdPk PRIMARY KEY (ID)
);
CREATE ROLE DataEntry;
GRANT SELECT, INSERT, UPDATE ON Attendance TO DataEntry;
如何找到分配给DataEntry角色的权限?我已经研究了一段时间,但找到的答案没有用。例如:
select * from ROLE_ROLE_PRIVS;
select * from ROLE_TAB_PRIVS;
select * from ROLE_SYS_PRIVS;
这些语句 return 许多角色,例如:dba、sys、....但我仍然找不到我的 'DataEntry' 角色。谁可以给我解释一下这个?非常感谢。
如果您创建了任何连接为 SYSTEM
的对象,您最好不要这样做。 SYS
和SYSTEM
比较特殊,不要乱用
关于你的问题:
SQL> show user
USER is "SCOTT"
SQL> create role dataentry;
Role created.
SQL> grant select, insert, update on emp to dataentry;
Grant succeeded.
SQL> select * From role_tab_privs;
ROLE OWNER TABLE_NAME COLUMN_NAM PRIVILEGE GRA
---------- ---------- ---------- ---------- ---------- ---
DATAENTRY SCOTT EMP INSERT NO
DATAENTRY SCOTT EMP SELECT NO
DATAENTRY SCOTT EMP UPDATE NO
SQL>
如果你想以特权用户的身份进行这样的查询,那就是dba_tab_privs
:
SQL> show user
USER is "SYS"
SQL> select * From dba_tab_privs where owner = 'SCOTT';
GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRA HIE
------------ ---------- ---------- ---------- ---------- --- ---
MIKE SCOTT DEPT SCOTT DELETE YES NO
DATAENTRY SCOTT EMP SCOTT INSERT NO NO
DATAENTRY SCOTT EMP SCOTT SELECT NO NO
DATAENTRY SCOTT EMP SCOTT UPDATE NO NO
SQL>
由于您标记了 SQLDev...打开视图菜单,select DBA。
添加您的连接。展开,转到安全,Select 角色,打开您的角色。
观察“对象权限”面板。
SQL 开发人员使用此 SQL
获取角色的对象权限SELECT privilege AS "Object Privilege"
, owner AS "Schema"
, table_name AS "Object"
FROM dba_tab_privs
WHERE grantee = :name -- DATAENTRY
ORDER BY 2
, 3
, 1