sqld
DCL(데이터 제어어)
자격증원톱
2026. 2. 27. 12:35
반응형
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: “권한을 다른 사람에게 재부여 가능”
반응형