▶ DCL(DATA CONTROLLER LANGUAGE)
- 데이터 제어 언어
- 계정에게 시스템 권한 또는 객체접근 권한을 부여(GRANT)하거나 회수(REVOKE)하는 언어
▶ 권한 부여(GRANT)
- 시스템 권한 : 특정 DB에 접근하는 권한, 객체들을 생성할 수 있는 권한
- 객체접근 권한 : 특정 객체들에 접근해서 조작할 수 있는 권한
■ 시스템 권한
[표현법]
GRANT 권한1, 권한2, ... TO 계정명;
● 시스템 권한의 종류
- CREATE SESSION : 계정에 접속할 수 있는 권한
- CREATE TABLE : 테이블을 생성할 수있는 권한
- CREATE VIEW : 뷰를 생성할 수 있는 권한
- CREATE SEQUENCE : 시퀀스를 생성할 수 있는 권한
ex)
-- 1. SAMPLE 계정 생성
CREATE USER SAMPLE IDENTIFIED BY SAMPLE;
-- 2. SAMPLE 계정에 접속하기 위한 CREATE SESSION 권한 부여
GRANT CREATE SESSION TO SAMPLE; -- CREATE SESSION == CONNECT
-- 3_1. SAMPLE계정에 테이블을 생성할 수 있는 CRATE TABLE 권한 부여
GRANT CREATE TABLE TO SAMPLE;
-- 3_2. SAMPLE계정에 테이블스페이스를 할당해주기(SAMPLE 계정 변경)
ALTER USER SAMPLE QUOTA 2M ON SYSTEM;
-- QUOTA : 몫 => 나누어주다, 할당하다
-- 2M : 2 Mega Byte
-- 4. SAMPLE계정에 뷰를 생성할 수 있는 CREATE VIEW 권한 부여
GRANT CREATE VIEW TO SAMPLE;
■ 객체 권한
- 특정 객체들을 조작할 수 있는 권한
- 조작 : SELECT, INSERT, UPDATE, DELETE => DML
[표현법]
GRANT 권한종류 ON 특정객체 TO 계정명;
권한종류 | 특정객체 |
SELECT | TABLE, VIEW, SEQUENCE |
INSERT | TABLE, VIEW |
UPDATE | TABLE, VIEW |
DELETE | TABLE, VIEW |
ex)
-- 5. SAMPLE 계정에 KH.EMPLOYEE테이블을 조회할 수 있는 권한 부여
GRANT SELECT ON KH.EMPLOYEE TO SAMPLE;
-- 6. SAMPLE 계정에 KH.DEPARTMENT테이블에 행을 삽입할 수 있는 권한 부여
GRANT INSERT ON KH.DEPARTMENT TO SAMPLE;
● 최소한의 권한만 부여하고자 할 때 CONNECT, RESOURCE만 부여
[표현법]
GRANT CONNECT, RESOURCE TO 계정명;
■ 롤(ROLE)
- 특정 권한들을 하나의 집합으로 모아 놓은 것
- CONNECT : CREATE SESSION(데이터베이스에 접속할 수 있는 권한)
- RESOURSE : CREATE TABLE, CREATE SEQUENCE, SELECT, INSERT, ...
(특정 객체들을 생성 및 조작할 수 있는 권한 == 관리할 수 있는 권한)
▶ 권한 회수(REVOKE)
- 권한을 빼앗을 때 사용하는 명령어
[표현법]
REVOKE 권한1, 권한2, ... FROM 계정명;
ex)
-- 7. SAMPLE 계정에서 테이블을 생성할 수 없도록 권한 회수
REVOKE CREATE TABLE FROM SAMPLE;
'DB' 카테고리의 다른 글
DB (11) OBJECT (0) | 2023.06.13 |
---|---|
DB (10) TCL(COMMIT, ROLLBACK, SAVEPOINT) (0) | 2023.06.13 |
DB (8) DDL(ALTER, DROP) (0) | 2023.06.10 |
DB (7) DML(INSERT, UPDATE, DELETE) (0) | 2023.06.10 |
DB (6) DDL(CREATE) (0) | 2023.06.08 |