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