[Database] MySQL 실습(7) - DCL : 권한 제어 (GRANT / REVOKE)

우유·2026년 2월 3일

[Cloud] Database

목록 보기
10/28

7. DCL : 권한 제어 (GRANT / REVOKE)


1) DCL이란?

DCL(Data Control Language) 은

데이터베이스에 누가, 무엇을 할 수 있는지를 제어하는 SQL이다.

구분역할
DDL구조 생성/변경
DML데이터 변경
DCL권한 제어
TCL트랜잭션 제어
  • DCL은 데이터가 아니라 “사람의 행동”을 제어한다

2) 사용자(User)와 권한(Privilege)

2-1) 사용자(User)

  • DB에 접속하는 주체
  • 애플리케이션
  • 운영자
  • 배치 프로그램
CREATE USER 'app_user'@'%' IDENTIFIED BY '1234';
  • @ : localhost 접근 허용
  • % : 모든 외부접근 허용
  • IDENTIFIED BY : 패스워드 설정

2-2) 권한(Privilege)

  • 사용자가 수행할 수 있는 행동
권한의미
SELECT조회
INSERT추가
UPDATE수정
DELETE삭제
CREATE테이블 생성
DROP테이블 삭제
ALL (PRIVILEGES : 생략가능)모든 권한
  • DCL의 대상은 권한

3) GRANT : 권한 부여

3-1) 가장 기본적인 GRANT

GRANT 권한 ON 테이블 TO 사용자

예시)

GRANT SELECT ON bootcamp_shop.* TO 'app_user';

더 정확하게 하려면 'app_user'@'%'로 유저 추가

의미:

  • bootcamp_shop DB의
  • 모든 테이블에 대해
  • SELECT만 허용
  • 읽기 전용 계정

3-2) 특정 테이블만 권한 부여

GRANT SELECT, INSERT ON bootcamp_shop.orders TO 'app_user'@'%';
  • orders 테이블만 접근 가능
  • 다른 테이블 접근 ❌

3-3) 운영 계정 권한 예시

GRANT SELECT, INSERT, UPDATE
ON bootcamp_shop.*
TO 'operator'@'%';
  • 조회/수정 가능
  • DROP, TRUNCATE 불가
  • 운영 사고 방지

3-4) 관리자 권한 (주의)

GRANT ALL (PRIVILEGES) ON bootcamp_shop.* TO 'admin'@'%';

4) REVOKE : 권한 회수(제거)

4-1) 특정 권한 제거

REVOKE UPDATE ON bootcamp_shop.* FROM 'app_user'@'%';
  • UPDATE만 제거
  • SELECT는 유지

4-2) 모든 권한 제거

REVOKE ALL (PRIVILEGES) ON bootcamp_shop.* FROM 'app_user'@'%';

5) 권한 확인

현재 사용자 권한 확인

SHOW GRANTS FOR 'app_user'@'%';
  • 운영 전 반드시 확인
profile
Front-end Developer, Cloud Engineer

0개의 댓글