이 게시물은 Database GUI Oracle SQL Developer의 아래 버전 정보를 기준으로 작성되었습니다. Java(TM) 플랫폼 : 1.8.0_321 Oracle IDE : 4.1.5.21.78 |
DCL - GRANT, REVOKE
DCL 챕터에 들어가기 전에
설명에 들어가기 전에 우선 사용자(USER)를 하나 생성해 보자.
CREATE USER DEVGSP
IDENTIFIED BY 1234;
만약 SCOTT로 접속되어 있다면 아래와 같은 오류 메시지가 나올 것이다.
SCOTT는 사용자를 생성할 권한이 없기 때문에 오류가 발생하는 것이다. 때문에 SYSTEM으로 접속하여 생성해 주자.
사용자가 성공적으로 생성되었다. 아래 쿼리를 실행해 확인해 보자.
-- 사용자 정보 조회
SELECT * FROM ALL_USERS
WHERE USERNAME = 'DEVGSP';
이제 새 사용자로 접속을 해 보자.
CONNECT DEVGSP/1234;
위 오류가 발생하며 접속에 실패한다. CREATE SESSION 권한이 없다고 한다.
그럼 주자
GRANT
설명
사용자에게 권한을 주려면 DCL(Data Control Language, 데이터 제어어) 중 하나인 GRANT 명령어를 사용해야 한다.
문법
GRANT [객체 권한/ALL PRIVILEGES] ON [스키마, 객체 이름] TO [사용자 이름/롤(Role)이름/PUBLIC] [WITH GRANT OPTION];
사용 예시
다시 위의 흐름으로 돌아가서 CREATE SESSION 권한을 줘 보도록 하자.
GRANT CREATE SESSION TO DEVGSP;
만약 실행이 안 된다면 SYSTEM으로 접속하여 다시 실행해 보자.
그러면 이제 새로 만든 사용자로 접속하여 임시 테이블을 하나 만들어 보자.
CONNECT DEVGSP/1234;
CREATE TABLE TB_TEMP_DCL(
COL_TEST NUMBER(5),
COL_TEST2 VARCHAR(10)
);
ㅅㅂ 또 안 된다고 난리다. CREATE TABLE을 실행하는 데 필요한 권한이 없다고 한다.
다시 SYSTEM으로 접속하여 아래 쿼리를 실행해 테이블 생성 권한을 주자.
GRANT CREATE TABLE TO DEVGSP;
다시 새 사용자로 접속하여 테이블을 생성하면..!
CONNECT DEVGSP/1234;
CREATE TABLE TB_TEMP_DCL(
COL_TEST NUMBER(5),
COL_TEST2 VARCHAR(10)
);
또 안 된다. 테이블 스페이스에 권한이 없다고 한다. 테이블 스페이스에 대한 권한 할당도 필요하다.
다시 SYSTEM으로 접속하여 아래 쿼리를 실행해 테이블 스페이스 권한도 할당해 주자.
GRANT UNLIMITED TABLESPACE TO DEVGSP;
다시 새 사용자로 접속하여 테이블 생성 쿼리를 재실행하자.
CONNECT DEVGSP/1234;
CREATE TABLE TB_TEMP_DCL(
COL_TEST NUMBER(5),
COL_TEST2 VARCHAR(10)
);
이 평범한 메시지가 이렇게나 반가울 수가 없다.
다음엔 다시 이 테이블 생성 권한을 회수해 보자.
REVOKE
설명
사용자에게서 권한을 박탈하는 DCL 명령어.
문법
REVOKE [객체 권한/ALL PRIVILEGES(필수)] (ON [스키마.객체 이름]) FROM [사용자 이름/롤(Role) 이름/PUBLIC(필수)]
사용 예시
권한을 제어할 수 있는 SYSTEM으로 접속한 후 아래 쿼리를 실행해 보자.
REVOKE CREATE TABLE FROM DEVGSP;
다시 새 사용자로 접속하여 아까 생성한 테이블과 다른 이름으로 테이블을 생성해 보자.
CONNECT DEVGSP/1234;
CREATE TABLE TB_TEMP_DCL2(
COL_TEST NUMBER(5),
COL_TEST2 VARCHAR(10)
);
다시 테이블 생성 권한이 사라진 것을 확인할 수 있다.
'개발 지식 > [DBMS] Oracle' 카테고리의 다른 글
[Oracle] 제약 조건(6) - 디폴트(DEFAULT) (0) | 2022.06.28 |
---|---|
[Oracle] 제약 조건(5) - 체크(CHECK) (0) | 2022.06.27 |
[Oracle] 제약 조건(4) - 외래 키(FOREIGN KEY) (0) | 2022.06.26 |
[Oracle] 제약 조건(3) - 기본 키(PRIMARY KEY) (0) | 2022.06.25 |
[Oracle] 제약 조건(2) - UNIQUE (0) | 2022.06.24 |