DB

[DB] MySQL - 사용자 및 권한 관리

planting grass 2025. 4. 8. 12:35
728x90

사용자 권한 관리란?

SQL을 사용하다보면 여러 사용자를 운영해야할 경우가 생긴다.

예를 들자면, 개발자에게는 읽기 / 쓰기 권한만 부여하거나, 외부 파트너에게는 읽기 권한만 부여하는 등 사용자를 여러개를 만들어 운영해야 하는 경우가 자주 발생한다.

자주 사용하는 사용자 생성, 권한 부여, 회수, 삭제 확인 과 같은 명령어나 문법 사용 예시를 확인해보자.

주요 명령어 및 문법

기능 문법
사용자 생성 CREATE USER '계정'@'호스트' IDENTIFIED BY '비밀번호';
권한 부여 GRANT 권한 ON DB명.테이블 TO '계정'@'호스트';
권한 회수 REVOKE 권한 ON DB명.테이블 FROM '계정'@'호스트';
사용자 삭제 DROP USER '계정'@'호스트';
권한 확인 SHOW GRANTS FOR '계정'@'호스트';
  • MySQL의 권한 종류
    분류 권한 설명
    데이터 조작 권한 (DML) SELECT, INSERT, UPDATE, DELETE 데이터 읽기/추가/수정/삭제
    트랜잭션 제어 LOCK TABLES, REFERENCES 테이블 잠금, 외래키 참조
    DDL (정의) CREATE, DROP, ALTER, INDEX, TRIGGER 테이블/뷰/인덱스 생성 및 구조 변경
    프로그램 객체 관련 CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EXECUTE 뷰, 프로시저, 함수 관련 권한
    계정/보안 관련 GRANT OPTION 다른 사용자에게 권한을 위임할 수 있음
    관리자 권한 (DBA급) ALL PRIVILEGES, SUPER, RELOAD, SHUTDOWN, PROCESS, FILE 서버 수준의 모든 작업 가능
    유저 관리 CREATE USER, ALTER USER, DROP USER 사용자 계정 생성, 변경, 삭제
    복제 관련 REPLICATION SLAVE, REPLICATION CLIENT 복제 서버 설정 권한
  • MySQL의 호스트 종류
    호스트 값 의미
    localhost 현재 MySQL 서버가 설치된 로컬 컴퓨터에서만 접속 가능
    % 모든 IP 및 호스트 이름에서 접속 허용 (보안상 주의 필요)
    192.168.0.% 192.168.0.* 대역의 모든 IP 허용
    192.168.0.5 특정 IP 한 개만 허용
    client.domain.com 해당 도메인 이름으로만 접속 허용
    ::1 IPv6 로컬호스트 주소
    myapp 내부 네트워크에서 등록된 서버명 기반의 접근 제어

사용 예시

1. 사용자 생성

CREATE USER 'testuser'@'localhost' IDENTIFIED BY '1234';

2. 권한 부여

GRANT SELECT, INSERT ON mydb.* TO 'testuser'@'localhost';

3. 권한 확인

SHOW GRANTS FOR 'testuser'@'localhost';

4. 권한 회수

REVOKE INSERT ON mydb.* FROM 'testuser'@'localhost';

5. 사용자 삭제

DROP USER 'testuser'@'localhost';
728x90