본문 바로가기
sqld

DCL(데이터 제어어)

by 자격증원톱 2026. 2. 27.
반응형

DCL(데이터 제어어)

반응형

 

1) DCL이 뭐냐?

  • DCL은 누가(DB 사용자) 무엇을(SELECT/INSERT/CREATE 등) 할 수 있는지 권한을 제어하는 SQL입니다.
  • 주로 DBA(관리자)가 씁니다.

2) 사용자(User)와 권한(Privilege)

2-1) 사용자(User)

  • DB에 로그인할 수 있는 계정입니다.
  • 예: CREATE USER user1 IDENTIFIED BY pw;

2-2) 권한(Privilege)

권한은 크게 2종류로 구분됩니다.

  1. 시스템 권한(System Privileges)
  • DB “전체 수준” 작업 권한
  • 예: CREATE TABLE, CREATE USER, ALTER SYSTEM 등
  1. 객체 권한(Object Privileges)
  • 특정 객체(테이블/뷰 등)에 대해 하는 작업 권한
  • 예: SELECT, INSERT, UPDATE, DELETE on EMP

한 줄 비유

  • 시스템 권한 = “건물 전체 출입 권한(관리자 권한)”
  • 객체 권한 = “특정 방(EMP 테이블) 출입/작업 권한”

3) GRANT: 권한 부여

기본 형태

GRANT 권한목록 ON 객체 TO 사용자_or_롤;
 
예시 1) biggiter에게 EMP 테이블 조회/삽입 권한 주기
GRANT SELECT, INSERT ON emp TO biggiter;
 
WITH GRANT OPTION(중요)
  • 권한을 받은 사람이 다른 사용자에게도 다시 권한을 줄 수 있게 허용하는 옵션
GRANT SELECT ON emp TO biggiter WITH GRANT OPTION;
 

즉, biggiter가 “권한 전달자”가 됩니다.
실무에서는 남발하면 권한 관리가 복잡해져서 신중하게 씁니다.


4) REVOKE: 권한 회수

기본 형태

REVOKE 권한목록 ON 객체 FROM 사용자_or_롤;
 
예시) biggiter의 EMP 조회/삽입 권한 회수
REVOKE SELECT, INSERT ON emp FROM biggiter;
 
 

5) ROLE: 권한을 “묶음으로” 관리

왜 ROLE을 쓰나?

사람이 많아지면 사용자마다 권한 주고 빼기가 너무 번거롭습니다.
그래서 권한을 역할(Role)로 묶어 관리합니다.

예: “인사팀 역할(hr_role)”

  • EMP 테이블 조회/삽입 가능
  • 테이블 생성도 가능(시스템 권한 포함 가능)

ROLE 생성

CREATE ROLE hr_role;
 
ROLE에 권한 부여(객체 권한 + 시스템 권한 둘 다 가능)
GRANT SELECT, INSERT ON emp TO hr_role;
GRANT CREATE TABLE TO hr_role;
 
사용자에게 ROLE 부여
GRANT hr_role TO biggiter;
 
ROLE 회수
REVOKE hr_role FROM biggiter;
 
ROLE 삭제
DROP ROLE hr_role;
 
비유
  • Role = “직무별 권한 패키지”
  • 직원이 인사팀으로 이동하면 GRANT hr_role, 다른 부서로 가면 REVOKE hr_role
  • 권한을 개인별로 흩뿌리지 않아서 관리가 쉬워집니다.

최종 요약(암기용)

  • GRANT: 권한/롤 부여
  • REVOKE: 권한/롤 회수
  • ROLE: 권한을 묶어서 부여/회수 쉽게 관리
  • 권한 종류: 시스템 권한(CREATE TABLE 등) vs 객체 권한(SELECT ON EMP 등)
  • WITH GRANT OPTION: “권한을 다른 사람에게 재부여 가능”
반응형

'sqld' 카테고리의 다른 글

DDL(데이터 정의어)  (0) 2026.02.27
TCL(트랜잭션 제어)  (0) 2026.02.27
DML(데이터조작어)  (0) 2026.02.27
정규표현식에 대해 자세히 알아보자!  (0) 2026.02.26
self join과 계층형질의  (0) 2026.02.26