2-3-4. DCL

박은서's avatar
Mar 02, 2026
2-3-4. DCL
💡
DCL (데이터 제어어 : Data Control Language)

1. 유저와 권한

1️⃣ DCL 명령의 기초 개념

1) DCL(Data Control Language)

  • 데이터베이스에서 사용자 권한을 관리하고 제어하는 데 사용되는 SQL 명령어
  • 데이터베이스 관리자(DBA)가 데이터베이스 사용자와 그들이 수행할 수 있는 작업을 관리하기 위해 사용됨

2️⃣ 유저

1) 유저

  • 데이터베이스에 접근할 수 있는 계정
  • 각 사용자는 고유한 유저 이름과 비밀번호 가지며, 이 계정을 통해 데이터베이스에 로그인하여 작업 수행
  • 데이터베이스 관리자는 새로운 유저를 생성하거나 유저의 권한을 설정하고 관리할 수 있음
    • CREATE USER 유저명 IDENTIFIED BY 패스워드;

2️⃣ 권한

1) 권한

  • 사용자가 데이터베이스에서 수행할 수 있는 작업의 범위
  • 권한은 일반적으로 데이터베이스 객체(예:테이블, 뷰)나 특정한 SQL 명령어(예:SELECT, INSERT, UPDATE, DELETE)에 대한 접근을 제어하는 데 사용됨
  • 사용자에게 직접 부여할 수 있으며, 특정 역할(Role)에 권한을 부여하고, 해당 역할을 사용자에게 부여할 수 있음

2) 주요 권한

  • 시스템 권한(System Privileges)
    • 데이터베이스 전체에 영향을 미치는 작업에 대한 권한
    • 예) CREATE TABLE, CREATE USER, ALTER SYSTEM 등
  • 객체 권한(Object Privileges)
    • 특정 데이터베이스 객체(예: 테이블, 뷰, 프로시저)에 대한 접근 권한
    • 예) SELECT, INSERT, UPDATE, DELETE 등

2. GRANT & REVOKE 명령어

1️⃣ GRANT 명령어

1) GRANT 명령어

  • 사용자나 역할(Role)에게 특정 권한 부여하는 데 사용됨

2) 형식

GRANT 권한명 ON 객체명 TO 유저명;

3) 예시

// bbigter 사용자에게 EMP 테이블에 대한 SELECTINSERT 권한 부여 GRANT SELECT, INSERT ON EMP TO bbigter;

4) WITH GRANT OPTION

  • 유저가 부여받은 권한을 다른 사용자에게 다시 부여할 수 있도록 허용하는 옵션
GRANT SELECT ON EMP TO bbigter WITH GRANT OPTION;

2️⃣ REVOKE 명령어

1) REVOKE 명령어

  • 사용자나 역할(Role)에게 특정 권한 회수하는 데 사용됨

2) 형식

REVOKE 권한명 ON 객체명 FROM 유저명;

3) 예시

// bbigter 사용자에게 EMP 테이블에 대한 SELECTINSERT 권한 회수 REVOKE SELECT, INSERT ON EMP FROM bbigter;

3. Role을 이용한 권한 부여

1️⃣ Role 기초 개념

1) Role

  • 여러 권한을 하나로 묶어 관리할 수 있는 방법
  • 사용자의 권한 관리를 일괄적으로 할 수 있어 관리가 용이해지고 오류의 가능성 줄일 수 있음

2️⃣ Role을 이용한 권한 부여

1) Role 생성

  • 새로운 Role 생성하기 위해 CREATE ROLE 명령어 사용
  • 형식
    • CREATE ROLE Role명칭;
  • 예시
    • // hr_role이라는 이름의 새로운 Role 생성 CREATE ROLE hr_role;

2) Role에 권한 부여

  • GRANT 명령으로 생성된 Role에 특정 권한 부여
  • 예시
    • // hr_role에 EMP 테이블에 대한 SELECTINSERT 권한 부여, 테이블 생성 권한도 부여 GRANT SELECT, INSERT ON EMP TO hr_role; GRANT CREATE TABLE TO hr_role;

3) 사용자에게 Role 할당

  • 권한이 부여된 Role을 사용자에게 할당
  • 예시
    • // bbigter 유저에게 hr_role 할당하여, 해당 Role이 가진 모든 권한 부여 GRANT hr_role TO bbigter;

4) 사용자에게 부여된 Role 회수

  • 사용자가 더 이상 특정 Role에 속하지 않도록 하려면 REVOKE 명령어를 사용해 해당 Role 회수
  • 예시
    • // bbigter 유저로부터 hr_role 회수하여, 더 이상 해당 Role이 가진 모든 권한 사용하지 못하게 함 REVOKE hr_role FROM bbigter;

4) Role 삭제

  • 더 이상 필요하지 않은 Role 삭제
  • Role을 삭제하면 해당 Role에 속한 모든 사용자들은 해당 Role로부터 부여받은 권한 잃음
  • 예시
    • DROP ROLE hr_role;
Share article