본문 바로가기

Database

DCL(Data Control Laguage)

반응형

DCL(Data Control Laguage)란 데이터베이스 사용자에게 권한을 부여 및 회수하는 언어이다.

 

GRANT 

  • 사용자에게 접속권한, 오브젝트 생성 등을 부여할 수 있는 명령어 이다.

 

REVOKE

  • 사용자에게 부여한 권한을 다시 회수하는 명령어이다.

 

권한의 종류

  • SELECT, INSERT, UPDATE, DELETE, REFERENS, ALTER, INDEX, ALL 등이 있다.

 

먼저 권한부여 및 회수를 하는 방법이다.

 

GRANT 권한 ON 테이블 TO 유저;
REVOKE 권한 ON 테이블 TO 유저;

 

 

한 유저가 컬럼을 업데이트 하고 싶어 한다. 그에 맞는 권한을 부여해보자.

 

GRANT SELECT, UPDATE
ON 테이블
TO 유저;

 

 

UPDATE 문과 WHERE문을 사용하기 위해 SELECT, UPDATE 권한을 부여했다.

 

GRANT OPTION

 

권한을 주고받는 상황에서 다음과 같은 상황에 처했다고 가정해보자.

 

1. root가 "유저1"에게 권한을 부여할 수 있는 권한을 부여 하였다.

2. "유저1"이 "유저2"에게 권한을 주었다.

 

3. 하지만 root가 "유저1" 의 권한을 회수 했다.

 

REVOKE 권한 ON 테이블 TO 유저1

이렇게 되면 권한을 받은 "유저2" 가 어떻게 되겠는가?

 

바로 "유저1" GRANT OPTION에(유저1이 권한을 받은 방식) 따라 바뀔 수 있다.

 

 GRANT 권한 ON 테이블 TO 유저1 WITH GRANT OPTION;
 GRANT 권한 ON 테이블 TO 유저1 WITH ADMIN OPTION;

다음과 같은 명령어로 인해 유저2의 권한의 상황은 바뀐다.

 

바로 아래와 같은 상황이다.

 

 

  • WITH GRANT OPTION은 권한을 회수 당하면 "유저1"이 권한을 줬던 유저까지 회수 당한다.
  • WITH ADMIN OPTION은 권한을 회수 당하여도 권한을 받은 유저들은 그대로 권한을 유지한다.

 

ROLE

 

출처 : http://www.gurubee.net/lecture/1010

  • 개별적으로 권한을 부여하고 관리하는 어려움을 해소하기 위해 다양한 권한을 하나의 그룹으로 묶어서 관리하는 것을 ROLE이라고 한다.
  • ROLE의 생성은 CREATE ROLE 권한을 가진 유저가 할 수 있다.

 

한마디로 ROLE은 권한을 가지고 있는 집합이라 할 수 있으며 유저들이 ROLE이 가지고 있는 권한리스트를 부여 받은 것이다.

 

ROLE을 생성 한다.

 
CREATE ROLE 롤;

 

ROLE에 권한을 부여 한다.

 

GRANT CREATE SESSION, CREATE TABLE TO ROLE;
(GRANT 권한1, 권한2 TO ROLE;)

 

권한이 부여된 ROLE을 USER나 ROLE에 부여 한다.

GRANT ROLE1 TO user1, ROLE2;

 

'Database' 카테고리의 다른 글

DDL(Data Definition Languge)  (0) 2023.05.03