사용자 및 ROLE에 부여된 권한조회하기
데이터베이스 작업 시 "권한이 불충분합니다."라는 오류 메시지와 마주할 때가 있습니다. 그럴때는 당황하지 마시고 현재 사용자의 권한을 확인하여 처리하시면 됩니다.
사용자 생성
권한부여 및 조회를 위한 테스트 계정을 만들어보겠습니다.
- SYNTAX
CREATE USER USER_NAME IDENTIFIED BY PASSWORD
[ DEFAULT TABLESPACE TABLESPACE_NAME ]
[ TEMPORARY TABLESPACE TEMP ]
;
- EX)
CREATE USER TEST IDENTIFIED BY TEST1234
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP;
※ 사용자 삭제
- SYNTAX
DROP USER USER_NAME [CASCADE];
- EX)
DROP USER TEST_USER CASCADE;
- CASCADE : 사용자에게 부여된 권한이나 사용자가 만든 객체가 존재할 경우 CASCADE 옵션을 사용해야 해당 사용자를 삭제할 수 있음
데이터베이스 접속 테스트
사용자가 정상적으로 생성되었는지 데이터베이스에 접속을 시도하면
아래와 같은 오류가 발생됩니다.
sqlplus TEST_USER/TEST1234@ORCL
ERROR: ORA-01045: user TEST_USER lacks CREATE SESSION privilege; logon denied
사용자에게 접속권한이 없다고 ERROR 메시지를 던져주네요!
권한부여
sqlplus / as sysdba
SQL> GRANT CREATE SESSION, CREATE TABLE TO TEST_USER;
-접속확인
SQL> conn TEST_USER/TEST1234@ORCL
※ 사용자에게 권한 부여 및 회수와 관련된 자세한 내용은 오라클 계정과 권한 포스팅을 참고하세요!
권한조회
1. USER 또는 ROLE에 부여된 시스템 권한조회
SELECT GRANTEE, PRIVILEGE, ADMIN_OPTION
FROM DBA_SYS_PRIVS;
또는
SELECT USERNAME, PRIVILEGE, ADMIN_OPTION
FROM USER_SYS_PRIVS;
- GRANTEE : 시스템 권한을 부여받은 USER 또는 ROLE
- USERNAME : 현재 접속된 사용자
- PRIVILEGE : 부여받은 시스템 권한
- ADMIN_OPTION : 부여받은 시스템 권한을 다른 사용자에게 부여할 수 있음(YES일 경우)
2. USER 또는 ROLE에 부여된 객체 권한조회
SELECT GRANTEE, OWNER, TABLE_NAME, PRIVILEGE, GRANTOR
FROM DBA_TAB_PRIVS
또는
SELECT GRANTEE, OWNER, TABLE_NAME, PRIVILEGE, GRANTOR
FROM USER_TAB_PRIVS
- GRANTEE : 객체 권한을 부여받은 USER 또는 ROLE
- OWNER : 객체의 소유자
- TABLE_NAME : 객체
- GRANTOR : 객체 권한을 부여해준 USER
3. USER 또는 ROLE에 부여된 ROLE 조회
※ DEFAULT ROLE
- 데이터베이스 설치 시 자동으로 생성되는 ROLE
- 대표적인 Default Role은 CONNECT, RESOURCE가 있음
- RESOURCE 롤은 UNLIMITED_TABLESPACE라는 권한이 할당되어 있음
- UNLIMITED_TABLESPACE 권한을 가진 사용자는 데이터베이스에 존재하는 모든 테이블 스페이스를 저장공간으로 사용가능
'데이터베이스' 카테고리의 다른 글
오라클 Hidden Column - SYS_로 시작하는 컬럼 (1) | 2017.06.30 |
---|---|
오라클 계정과 권한 (0) | 2017.06.23 |
오라클 TABLESPACE와 DATAFILE (0) | 2017.06.16 |
TIMESTAMP 연산 (0) | 2017.05.11 |
오라클 - PIVOT과 UNPIVOT (0) | 2017.02.02 |