[DataBase] DCL (데이터 제어어)

 

데이터베이스


(1) DCL (Data Control Language, 데이터 제어어)

  • 데이터베이스 접근 및 사용에 대한 권한 할당이나 회수하는 명령어

  • GRANT, REVOKE, COMMIT, ROLLBACK 등이 있음

  • COMMIT, ROLLBACK은 TCL(Transaction Control Language)로 분류되는 경우도 있음

 

TCL : 데이터베이스 상태를 변화시키는 논리적 작업 단위

 

 

가) GRANT

  • 사용자에게 데이터베이스 오브젝트에 대한 권한 부여

[그림 1] GRANT

 

privilege_name

  • 사용자에게 부여된 접근 권한

  • 접근 권한은 시스템 권한과 오브젝트 권한으로 나뉨

 

[표 1] 시스템 권한과 오브젝트 권한

시스템 권한 CREATE
ALTER
DROP
...
오브젝트 권한 INSERT
SELECT
UPDATE
EXECUTE
...

 

 

Object_name

  • TABLE, VIEW, STORED PROC, SEQUENCE와 같은 데이터베이스 오브젝트 이름

 

user_name

  • 권한을 부여받을 사용자 이름

 

PUBLIC

  • 모든 사용자에게 권한을 부여할 경우 사용

 

ROLES

  • 권한들을 하나의 그룹으로 묶은 것

 

데이터베이스 사용자 수가 많을 때 권한 부여 및 회수를 좀 더 편리하게 한다.

 

 

다음은 몇 가지 시스템 ROLE에 들어있는 권한 목록이다.

 

[표 2] Microsoft Access 데이터 타입

System ROLE 권한
CONNECT CREATE TABLE
CREATE VIEW
CREATE SYNONYM
CREATE SEQUENCE
CREATE SESSION
...
RESOURCE CREATE PROCEDURE
CREATE SEQUENCE
CREATE TABLE
CREATE TRIGGER
...
DBA 모든 시스템 권한

 

RESOURCE : 주로 데이터베이스 오브젝트에 대한 접근을 제한할 때 사용

 

 

WITH GRANT OPTION

  • 해당 사용자가 다른 사용자에게 접근 권한을 부여할 수 있게 함

[그림 2] WITH GRANT OPTION

 

 

나) REVOKE

  • 사용자의 데이터베이스 오브젝트에 대한 접근 권한을 회수

[그림 3] REVOKE

 

 

다) COMMIT

  • RDBMS의 트랜잭션을 종료시키고 데이터베이스 내의 변화 내용이 다른 모든 사용자가 볼 수 있도록 함

  • 데이터 변경 시 아직 임시적인 상태로 있는 데이터를 저장 > 데이터가 변경 및 저장되었음을 확실히 함

  • 여기서 트랜잭션은 데이터베이스의 가장 작은 작업 단위이며, 데이터베이스에 내린 명령어의 연속

  • 트랜잭션은 프로그래머에 의해 수동적으로 수행될 수 있으며, 자동화 프로그램을 사용하여 자체적 수행도 가능

  • 보통 이전 COMMIT부터 이후 COMMIT 이전까지를 트랜잭션으로 봄 

[그림 4] COMMIT

 

DELETE 명령을 수행 후에 COMMIT을 입력하면, 해당 테이블에서 student_id가 '1420891'인 레코드를 삭제한 변경 상태를 확실하게 저장한다는 의미가 된다.

 

 

라) ROLLBACK

  • 말 그대로 이전 작업을 되돌리는 명령

  • 이전 COMMIT 또는 ROLLBACK 명령 전까지의 상태를 복구할 수 있다.

  • COMMIT과 사용법이 같음

[그림 5] ROLLBACK

 

student_info 테이블에 'Hannah'라는 학생 정보를 넣었다가 ROLLBACK 명령을 입력하면 테이블 갱신 이전 상태로 돌아가게 된다.

 

 

여기까지 SQL의 DDL, DML, DCL을 모두 확인하였다.

 

데이터베이스 포렌식을 효율적으로 하기 위해서는 SQL 쿼리문을 능숙하게 사용할 수 있어야 한다.


# Reference

 

http://www.yes24.com/Product/Goods/87579830

+ Recent posts