DCL(데이터 제어어)
f
firststep 에디터
IT / 자격증 전문 라이터
2026년 2월 27일993
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종류로 구분됩니다.
- 시스템 권한(System Privileges)
- DB “전체 수준” 작업 권한
- 예: CREATE TABLE, CREATE USER, ALTER SYSTEM 등
- 객체 권한(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: “권한을 다른 사람에게 재부여 가능”
f
firststep 에디터 · IT / 자격증 전문 라이터
firststep.kr의 실무 에디터로서 무언가를 처음 도전하는 분들이 헤매지 않도록 검증된 지식과 실습 가이드를 작성합니다.
댓글 0개
댓글을 작성하려면 로그인이 필요합니다
간단한 이메일과 비밀번호로 3초 만에 가입하고 의견을 남겨보세요.
첫 번째 댓글을 남겨보세요!