SQL/SQLD

#26 DCL

sundori 2025. 4. 17. 14:46

목차

    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

    'SQL > SQLD' 카테고리의 다른 글

    #25 DDL  (0) 2025.04.16
    #24 TCL  (0) 2025.04.16
    #23 DML  (0) 2025.04.15
    #22 계층 쿼리  (0) 2025.04.15
    #20 Top-N 쿼리  (0) 2025.04.15