목차
DCL(Data Control Language) - 데이터 제어어
DCL은 사용자에게 데이터베이스에 대한 권한을 부여하거나 회수하는 SQL 명령어다.
즉, 누가 어떤 테이블을 보고, 수정하고, 삭제할 수 있는지를 제어하는 명령어들이며, DB 보안과 접근 권한 관리에서 중요하다.
실무에서는 DBA나 보안 담당자가 자주 사용하는 영역이며, DML/DDL을 누가 할 수 있는지 설정하는 것이라고 이해하면 쉽다.
회사로 따지면,
- CREATE USER는 직원 채용
- GRANT는 사무실 출입카드 부여
- REVOKE는 퇴사 시 출입카드 회수
이런 개념이다.
CREATE USER - 사용자 생성
CREATE USER ugi IDENTIFIED BY pw01234;
설명:
- 새 사용자를 생성하고 로그인 비밀번호를 설정
- 기본적으로 아무 권한도 없는 빈 계정으로 생성됨
ALTER USER - 사용자 정보 수정
CREATE USER ugi IDENTIFIED BY pw1234;
설명:
- 비밀번호 변경 시 사용
- 사용자 계정을 잠그거나 잠금 해제도 가능
DROP USER - 사용자 삭제
DROP USER ugi;
설명:
- 사용자를 DB에서 완전히 제거
- DROP USER username CASCADE; → 해당 사용자가 소유한 객체도 같이 삭제
GRANT - 권한 부여
사용자에게 테이블 접근, 객체 생성, 사용자 생성 등의 권한을 부여하는 명령어
GRANT CREATE SESSION TO ugi;
GRANT CREATE TABLE TO ugi;
GRANT SELECT, INSERT ON students TO ugi;
설명:
- 시스템 권한: CREATE SESSION, CREATE USER, CREATE TABLE 등
- 객체 권한: 특정 테이블에 SELECT, INSERT, UPDATE 등
- WITH GRANT OPTION → 권한을 다른 사용자에게도 위임 가능
REVOKE - 권한 회수
REVOKE CREATE TABLE FROM jungmina;
REVOKE SELECT ON students FROM jungmina;
설명:
- GRANT로 부여했던 권한을 취소
- 일부 권한만 회수하거나 전부 회수 가능
ROLE – 권한 묶음
ROLE은 여러 권한을 하나의 세트처럼 묶어서 관리하는 도구이다.
햄버거 세트를 한 번에 주문하듯, 다수의 권한을 한 번에 부여할 수 있다.
-- 역할 생성
CREATE ROLE create_r;
-- 권한 묶음 지정
GRANT CREATE SESSION, CREATE USER, CREATE TABLE TO create_r;
-- 사용자에게 역할 부여
GRANT create_r TO jungmina;
설명:
- ROLE로 권한을 그룹화하면 사용자 관리가 효율적
- 권한이 바뀌면 ROLE만 수정하면 되기 때문에 대규모 시스템에 유용
명령어 | 설명 | 사용 예 |
CREATE USER | 사용자 생성 | CREATE USER u1 IDENTIFIED BY pw; |
ALTER USER | 사용자 속성 변경 (비번 등) | ALTER USER u1 IDENTIFIED BY newpw; |
DROP USER | 사용자 삭제 | DROP USER u1; |
GRANT | 권한 부여 | GRANT SELECT ON table TO u1; |
REVOKE | 권한 회수 | REVOKE SELECT ON table FROM u1; |
CREATE ROLE | 권한 묶음 생성 | CREATE ROLE dev_role; |
GRANT role | 역할 부여 | GRANT dev_role TO u1; |
728x90