visualizar ver usuario sobre rol privilegios permisos listar grants esquema dar asignar all oracle security oracle10g user-accounts

usuario - ver privilegios de un rol oracle



¿Cómo encontrar los privilegios y roles otorgados a un usuario en Oracle? (8)

Además de la respuesta de VAV, la primera fue más útil en mi entorno

select * from USER_ROLE_PRIVS where USERNAME=''SAMPLE''; select * from USER_TAB_PRIVS where Grantee = ''SAMPLE''; select * from USER_SYS_PRIVS where USERNAME = ''SAMPLE'';

Estoy usando Linux, Oracle10g. He creado un usuario llamado prueba. y concedió crear sesión y seleccionar cualquier permiso de diccionario para el mismo usuario.

También otorgué los roles de sysdba y sysoper a los mismos usuarios.

Ahora quiero mostrar todos los privilegios y roles otorgados al usuario. Encontré la siguiente consulta pero muestra solo crear sesión y seleccionar privilegios de diccionario.

select privilege from dba_sys_privs where grantee=''SAMPLE'' order by 1;

por favor ayuda a resolver el problema.

Gracias


Combinando las sugerencias anteriores para determinar tus permisos personales (es decir, permisos de "USUARIO"), utiliza esto:

-- your permissions select * from USER_ROLE_PRIVS where USERNAME= USER; select * from USER_TAB_PRIVS where Grantee = USER; select * from USER_SYS_PRIVS where USERNAME = USER; -- granted role permissions select * from ROLE_ROLE_PRIVS where ROLE IN (select granted_role from USER_ROLE_PRIVS where USERNAME= USER); select * from ROLE_TAB_PRIVS where ROLE IN (select granted_role from USER_ROLE_PRIVS where USERNAME= USER); select * from ROLE_SYS_PRIVS where ROLE IN (select granted_role from USER_ROLE_PRIVS where USERNAME= USER);



Ninguna de las otras respuestas funcionó para mí, así que escribí mi propia solución:

A partir de Oracle 11g.

Reemplazar al USUARIO con el nombre de usuario deseado

Roles concedidos:

SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE = ''USER'';

Privilegios otorgados directamente al usuario:

SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE = ''USER'';

Privilegios concedidos a la función otorgada al usuario:

SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE IN (SELECT granted_role FROM DBA_ROLE_PRIVS WHERE GRANTEE = ''USER'');

Privilegios del sistema concedidos:

SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = ''USER'';

Si desea buscar el usuario al que está conectado actualmente, puede reemplazar el DBA en el nombre de la tabla con el USUARIO y eliminar la cláusula WHERE.


Si se otorgan privilegios a un usuario a través de algunos roles, se puede usar SQL debajo

select * from ROLE_ROLE_PRIVS where ROLE = ''ROLE_NAME''; select * from ROLE_TAB_PRIVS where ROLE = ''ROLE_NAME''; select * from ROLE_SYS_PRIVS where ROLE = ''ROLE_NAME'';


siempre haz SQL reutilizable: - :)

-- =================================================== -- &role_name will be "enter value for ''role_name''". -- Date: 2015 NOV 11. -- sample code: define role_name=&role_name -- sample code: where role like ''%&&role_name%'' -- =================================================== define role_name=&role_name select * from ROLE_ROLE_PRIVS where ROLE = ''&&role_name''; select * from ROLE_SYS_PRIVS where ROLE = ''&&role_name''; select role, privilege,count(*) from ROLE_TAB_PRIVS where ROLE = ''&&role_name'' group by role, privilege order by role, privilege asc ;


SELECT * FROM DBA_ROLE_PRIVS WHERE UPPER(GRANTEE) LIKE ''%XYZ%'';


select * from ROLE_TAB_PRIVS where role in ( select granted_role from dba_role_privs where granted_role in (''ROLE1'',''ROLE2'') )