고래씌
[Oracle] 9. DCL(GRANT, REVOKE) 본문
1. DCL(Data Control Language) :데이터 제어 언어
- 계정에게 시스템권한 또는 객체접근권한을 부여(GRANT)하거나 회수(REVOKE)하는 언어
▶ 권한부여(GRANT)
- 시스템권한 : 특정 DB에 접근하는 권한
객체들을 생성할 수 있는 권한
- 객체접근권한 : 특정 객체들에 접근해서 조작할 수 있는 권한
▶ 시스템 권한
[표현법]
GRANT 권한1, 권한2, ... TO 계정명; |
▶ 시스템 권한의 종류
- CREATE SESSION : 계정에 접속할 수 있는 권한
- CREATE TABLE : 테이블을 생성할 수 있는 권한
- CREATE VIEW : 뷰를 생성할 수 있는 권한
...
1) 계정 생성
CREATE USER SAMPLE IDENTIFIED BY SAMPLE; |
☞ 아직 CREATE SESSION 권한부여를 안줘서 오류 발생
2) SAMPLE계정에 접속하기 위한 CREATE SESSION 권한 부여
GRANT CREATE SESSION TO SAMPLE; |
3) SAMPLE 계정에 테이블을 생성
① SAMPLE 계정에 CREATE TABLE 권한 부여받기 전
☞ 오류 발생. TABLE 생성이 안된다.
☞ 불충분한 권한 : SAMPLE계정에 테이블 생성 권한을 부여하지 않아서 발생
② CREATE TABLE 권한 부여받은 후
▶ 시스템 계정에서 SMAPLE계정에 CREATE TABLE 권한 부여 (시스템 계정)
☞ SAMPLE 계정에 다시 CREATE TABLE을 실행해보면 오류발생.
☞ SAMPLE 계정에 TABLESPACE가 아직 할당되지 않아서 오류 발생
③ SAMPLE 계정에 테이블 스페이스를 할당해주기(SAMPLE계정변경)(시스템 계정)
ALTER USER SAMPLE QUOTA 2M ON SYSTEM; |
- QUOTA : 몫 나누어주다, 할당하다.
=> SYSTEM 계정에서 2M만큼의 저장공간을 할당시켜줌
☞ TABLESPACE 할당받은 후 SAMPLE 계정에서 정상적으로 CREATE TABLE 실행됨
☞ SAMPLE 계정에서 테이블 생성 권한을 부여받으면 현재 계정이 소유하고 있는 테이블들을 조작(DML)하는 것도 가능해진다!!
4) 뷰 만들어 보기
① 권한 부여받기 전
☞ 에러발생.
② SAMPLE 계정에 뷰를 생성할 수 있는 CREATE VIEW 권한 부여(시스템 계정)
(SMAPLE 계정)
☞ 권한 부여 후, 정상적으로 실행됨
2. 객체권한
: 특정 객체들을 조작할 수 있는 권한
조작 : SELECT, INSERT, UPDATE, DELETE
[표현법]
GRANT 권한종류 ON 특정객체 TO 계정명; |
권한종류 | 특정객체 |
SELECT | TABLE, VIEW, SEQUENCE |
INSERT | TABLE, VIEW |
UPDATE | TABLE, VIEW |
DELETE | TABLE, VIEW |
1) SAMPLE 계정에서 KH계정의 테이블에 접근해서 조회해보기
☞ DEPARTMENT 테이블 조회권한을 부여받지 않으면 접근 불가
▶ SAMPLE 계정에 KH.EMPLOYEE 테이블을 조회할 수 있는 권한 부여(시스템 계정)
EMPLOYEE 테이블 접근권한 부여받은 후(SAMPLE 계정)
☞ 권한 부여 후, SAMPLE 계정에서 조회 되는 것 확인
2) SMAPLE계정에서 KH계정의 테이블에 접근해서 행 삽입
▶ SAMPLE 계정에 KH.DEPARTMENT 테이블에 행을 삽입할 수 있는 권한 부여(시스템 계정)
▶ KH의 DEPARTMENT 테이블에 회계부 부서 추가(SAMPLE 계정)
☞ 권한 부여 전 오류 발생했지만, 권한부여 후에는 정상적으로 추가됨
3. 권한 회수(REVOKE)
: 권한을 회수할 때 사용하는 명령어
[표현법]
REVOKE 권한1, 권한2, ... FROM 계정명; |
1) 권한 회수 후, 테이블 생성해보기
▶ SAMPLE 계정에서 테이블을 생성할 수 없도록 권한 회수(시스템 계정)
▶ 권한 회수 후, 테이블 생성해보기(SAMPLE 계정)
☞ 테이블 생성권한 회수로 인한 권한 불충분 에러
4. 일반 개발자가 개발을 하기위한 최소한의 권한
- GRANT CONNECT, RESOURCE TO 계정명;
▶ 롤 ROLE
- 특정 권한들을 하나의 집합으로 모아놓은 것
- RESOURCE : CREATE TABLE, CREATE SEQUENCE, SELECT, INSERT, ...
(특정 객체들을 생성 및 조작할 수 있는 권한)
- CONNECT : CREATE SESSION (데이터베이스에 접속할 수 있는 권한)
'Database > Oracle' 카테고리의 다른 글
[Oracle] 11. Object(VIEW) (0) | 2023.11.30 |
---|---|
[Oracle] 10. TCL(COMMIT, ROLLBACK) (0) | 2023.11.30 |
[Oracle] 8-2. DDL(ALTER, DROP) ② - DROP (0) | 2023.11.30 |
[Oracle] 8-1. DDL(ALTER, DROP) ① - ALTER (0) | 2023.11.30 |
[Oracle] DML 실습문제 (CREATE, INSERT, UPDATE, DELETE) (0) | 2023.11.29 |