다른 사용자의 스키마에 부여된 권한을 확인하는 방법
예를 들어, 데이터베이스에는 두 명의 사용자 A와 B와 해당 스키마가 있습니다.
나는 어떻게 정보를 얻을 수 있는지 알고 싶습니다: 스키마 B에 있는 사용자 A에 대한 권한.
예를 들어, 두 명의 사용자와 그와 연관된 스키마가 있습니다.사용자 A와 사용자 B가 있습니다.A에서는 TB1 TB2, B에서는 TBa, TBb라고 합니다.이제 사용자 A가 스키마 B에 대해 어떤 권한을 가지고 있는지 어떻게 찾을 수 있는지 알고 싶습니다.
예: 사용자 A가 다음을 쓰고 있습니다.select * from B.TBb
이것은 사용자 A가 사용자 B의 테이블에 액세스하고 있다는 것을 의미하므로, 사용자 B가 SELECT 권한을 가지고 있음을 나타냅니다.나는 사용자 A가 스키마 B에 대한 모든 권한을 가지고 있는지 알고 싶습니다.
사용자 A가 스키마 B에 대해 가지고 있는 권한 목록을 가져오려면 실행해야 하는 쿼리입니다.
다음 쿼리를 사용할 수 있습니다.
select * from all_tab_privs;
select * from dba_sys_privs;
select * from dba_role_privs;
각 테이블에는 다음이 있습니다.grantee
열에서 다음 기준으로 필터링할 수 있습니다.
where grantee = 'A'
먼저 제안하는 다른 스키마의 개체(예: 테이블)에 대한 권한을 쿼리합니다.all_tab_privs
그것은 또한 가지고 있습니다.table_schema
기둥.
권한을 쿼리할 동일한 사용자로 로그인한 경우user_tab_privs
,user_sys_privs
,user_role_privs
일반적인 비 dba 사용자가 쿼리할 수 있습니다.
실라기 도나트의 게시물에서 예시를 사용합니다.
두 개의 쿼리를 사용합니다. 하나는 연결 허가를 제외하고 어떤 역할이 있는지 확인합니다.
SELECT * FROM USER_ROLE_PRIVS WHERE GRANTED_ROLE != 'CONNECT'; -- Roles of the actual Oracle Schema
스키마/사용자가 어떤 권한/역할을 가지고 있는지 알고 싶습니다. 예를 들어 ROLE_VIEW_PAYMENTS & ROLE_OPS_CUSTMER 역할이 있습니다.그러나 사용한 특정 역할의 테이블/객체를 찾으려면:
SELECT * FROM ALL_TAB_PRIVS WHERE GRANTEE='ROLE_OPS_CUSTOMERS'; -- Objects granted at role.
이 예제의 소유자 스키마는 PRD_CUSTERMS_OWNER(또는 역할/스키마 자체)일 수 있습니다.
안부 전해요.
데이터베이스에 로그인합니다.그런 다음 아래 쿼리를 실행합니다.
dba_role_privs에서 *를 선택합니다. 여기서 grantee = 'SCHEMA_NAME';
스키마에 부여된 모든 역할이 나열됩니다.
실라기 도나트의 답변에 감사드립니다.이것은 조항이 추가된 바로 그 장소에서 가져온 것입니다.
언급URL : https://stackoverflow.com/questions/14604576/how-to-see-what-privileges-are-granted-to-schema-of-another-user
'sourcecode' 카테고리의 다른 글
Vue.js: 메서드에서 계산된 속성을 사용하면 정의되지 않은 오류가 반환됩니다. (0) | 2023.06.27 |
---|---|
Oracle SYS 계정과 SYSTEM 계정의 차이점은 무엇입니까? (0) | 2023.06.27 |
Python 패키지의 종속성을 찾는 방법 (0) | 2023.06.27 |
스레드화에서 join()의 용도는 무엇입니까? (0) | 2023.06.27 |
열의 값이 고유한지 확인하기 위한 SQL 쿼리 (0) | 2023.06.27 |