[SQL] 어떻게 오라클에서 사용자의 모든 권한을 보여?
SQL어떻게 오라클에서 사용자의 모든 권한을 보여?
사람이 어떻게 SQL 콘솔에서 특정 사용자의 모든 권한 / 규칙을 보여 말해 주시겠습니까?
해결법
-
==============================
1.당신은 뷰 아래에 다음을 시도 할 수 있습니다.
당신은 뷰 아래에 다음을 시도 할 수 있습니다.
SELECT * FROM USER_SYS_PRIVS; SELECT * FROM USER_TAB_PRIVS; SELECT * FROM USER_ROLE_PRIVS;
DBA와 다른 고급 사용자는이 같은 전망의 DBA_ 버전과 다른 사용자에게 부여 된 권한을 찾을 수 있습니다. 그들은 문서에 적용됩니다.
이러한 전망은 직접 사용자에게 부여 된 권한을 보여줍니다. 역할을 통해 간접적으로 부여 된 포함한 모든 특권을 찾기는 더 복잡 재귀 SQL 문이 필요합니다
select * from dba_role_privs connect by prior granted_role = grantee start with grantee = '&USER' order by 1,2,3; select * from dba_sys_privs where grantee = '&USER' or grantee in (select granted_role from dba_role_privs connect by prior granted_role = grantee start with grantee = '&USER') order by 1,2,3; select * from dba_tab_privs where grantee = '&USER' or grantee in (select granted_role from dba_role_privs connect by prior granted_role = grantee start with grantee = '&USER') order by 1,2,3,4;
-
==============================
2.당신이 얻을하는 방법 미친에 따라 그렇게 할 것이다 주위에 떠있는 다양한 스크립트가 있습니다. 나는 개인적으로 피트 피니의 find_all_privs 스크립트를 사용합니다.
당신이 얻을하는 방법 미친에 따라 그렇게 할 것이다 주위에 떠있는 다양한 스크립트가 있습니다. 나는 개인적으로 피트 피니의 find_all_privs 스크립트를 사용합니다.
당신이 직접 작성하려는 경우 쿼리는 오히려 도전됩니다. 사용자 DBA_SYS_PRIVS에서 볼 수 있습니다 시스템 권한을 부여 할 수 있습니다. 그들은 DBA_TAB_PRIVS에서 볼 수 있습니다 개체 권한을 부여 할 수 있습니다. 그리고 그들은 DBA_ROLE_PRIVS에 볼 수 있습니다 역할을 부여 할 수 있습니다 (역할은 기본 또는 기본이 아닌 될 수 있으며 암호를 요구할 수 있습니다뿐만 아니라, 그래서 사용자가 역할을 부여받은해서 사용자가 반드시 권한을 사용할 수있는 것은 아닙니다 그는) 기본적으로 역할을 통해 인수했다. 하지만 그 역할은, 차례로, ROLE_SYS_PRIVS, ROLE_TAB_PRIVS 및 ROLE_ROLE_PRIVS 보면 볼 수있는 시스템 권한, 오브젝트 특권 및 추가 역할을 부여 할 수 있습니다. 피트의 스크립트는 사용자에게 흐르는 결국 모든 특권을 보여주기 위해 그 관계를 통해 안내합니다.
-
==============================
3.또 다른 유용한 자원 :
또 다른 유용한 자원 :
http://psoug.org/reference/roles.html
-
==============================
4.Raviteja Vutukuri의 응답 작품과 함께 넣어 빠른 반면, 필터를 변화 특히 유연하지 그리고 프로그래밍 뭔가를 찾고 있다면 너무 많은 도움이되지 않습니다. 그래서 함께 내 자신의 쿼리를 넣어 :
Raviteja Vutukuri의 응답 작품과 함께 넣어 빠른 반면, 필터를 변화 특히 유연하지 그리고 프로그래밍 뭔가를 찾고 있다면 너무 많은 도움이되지 않습니다. 그래서 함께 내 자신의 쿼리를 넣어 :
SELECT PRIVILEGE, OBJ_OWNER, OBJ_NAME, USERNAME, LISTAGG(GRANT_TARGET, ',') WITHIN GROUP (ORDER BY GRANT_TARGET) AS GRANT_SOURCES, -- Lists the sources of the permission MAX(ADMIN_OR_GRANT_OPT) AS ADMIN_OR_GRANT_OPT, -- MAX acts as a Boolean OR by picking 'YES' over 'NO' MAX(HIERARCHY_OPT) AS HIERARCHY_OPT -- MAX acts as a Boolean OR by picking 'YES' over 'NO' FROM ( -- Gets all roles a user has, even inherited ones WITH ALL_ROLES_FOR_USER AS ( SELECT DISTINCT CONNECT_BY_ROOT GRANTEE AS GRANTED_USER, GRANTED_ROLE FROM DBA_ROLE_PRIVS CONNECT BY GRANTEE = PRIOR GRANTED_ROLE ) SELECT PRIVILEGE, OBJ_OWNER, OBJ_NAME, USERNAME, REPLACE(GRANT_TARGET, USERNAME, 'Direct to user') AS GRANT_TARGET, ADMIN_OR_GRANT_OPT, HIERARCHY_OPT FROM ( -- System privileges granted directly to users SELECT PRIVILEGE, NULL AS OBJ_OWNER, NULL AS OBJ_NAME, GRANTEE AS USERNAME, GRANTEE AS GRANT_TARGET, ADMIN_OPTION AS ADMIN_OR_GRANT_OPT, NULL AS HIERARCHY_OPT FROM DBA_SYS_PRIVS WHERE GRANTEE IN (SELECT USERNAME FROM DBA_USERS) UNION ALL -- System privileges granted users through roles SELECT PRIVILEGE, NULL AS OBJ_OWNER, NULL AS OBJ_NAME, ALL_ROLES_FOR_USER.GRANTED_USER AS USERNAME, GRANTEE AS GRANT_TARGET, ADMIN_OPTION AS ADMIN_OR_GRANT_OPT, NULL AS HIERARCHY_OPT FROM DBA_SYS_PRIVS JOIN ALL_ROLES_FOR_USER ON ALL_ROLES_FOR_USER.GRANTED_ROLE = DBA_SYS_PRIVS.GRANTEE UNION ALL -- Object privileges granted directly to users SELECT PRIVILEGE, OWNER AS OBJ_OWNER, TABLE_NAME AS OBJ_NAME, GRANTEE AS USERNAME, GRANTEE AS GRANT_TARGET, GRANTABLE, HIERARCHY FROM DBA_TAB_PRIVS WHERE GRANTEE IN (SELECT USERNAME FROM DBA_USERS) UNION ALL -- Object privileges granted users through roles SELECT PRIVILEGE, OWNER AS OBJ_OWNER, TABLE_NAME AS OBJ_NAME, GRANTEE AS USERNAME, ALL_ROLES_FOR_USER.GRANTED_ROLE AS GRANT_TARGET, GRANTABLE, HIERARCHY FROM DBA_TAB_PRIVS JOIN ALL_ROLES_FOR_USER ON ALL_ROLES_FOR_USER.GRANTED_ROLE = DBA_TAB_PRIVS.GRANTEE ) ALL_USER_PRIVS -- Adjust your filter here WHERE USERNAME = 'USER_NAME' ) DISTINCT_USER_PRIVS GROUP BY PRIVILEGE, OBJ_OWNER, OBJ_NAME, USERNAME ;
장점 :
-
==============================
5.당신은 모든 사용자의 모든 권한 목록을 얻으려면 코드 아래 사용할 수 있습니다.
당신은 모든 사용자의 모든 권한 목록을 얻으려면 코드 아래 사용할 수 있습니다.
select * from dba_sys_privs
-
==============================
6.모든 권한을 표시하려면
모든 권한을 표시하려면
from https://stackoverflow.com/questions/9811670/how-to-show-all-privileges-from-a-user-in-oracle by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 PostgreSQL의 2 진수 곳으로 평균을 반올림? (0) | 2020.05.18 |
---|---|
[SQL] 내부는 세 개의 테이블을 조인 (0) | 2020.05.18 |
[SQL] 언제 대신 SQL의 XML을 사용해야합니까? [닫은] (0) | 2020.05.18 |
[SQL] 어떻게 고려 시간을내어없이 날짜 시간 열을 기준으로 I 그룹 (0) | 2020.05.18 |
[SQL] 데이터베이스 구조 변경에 대한 버전 관리 시스템이 있습니까? (0) | 2020.05.18 |