Backend
home

MySQL 사용자 생성 및 권한 설정

생성 일시
2025/06/15 06:52
태그
MySQL
게시일
2025/06/15
최종 편집 일시
2025/06/15 07:05

1. MySQL에 로그인

mysql -u root -p
Bash
복사

2. 사용자 생성

기본 구문
CREATE USER 'username'@'localhost' IDENTIFIED BY '비밀번호';
SQL
복사
예시
CREATE USER 'devuser'@'localhost' IDENTIFIED BY 'strongPassword123!';
SQL
복사
localhost 는 이 사용자가 접속할 수 있는 호스트이다. 만약 다른 머신에서도 접속하게 하고 싶다면 % 사용
CREATE USER 'devuser'@'%' IDENTIFIED BY 'strongPassword123!';
SQL
복사

3. 권한 부여

예시: 특정 데이터베이스에 대한 전체 권한
GRANT ALL PRIVILEGES ON dbname.* TO 'devuser'@'localhost';
SQL
복사
예시: 읽기 전용 권한
GRANT SELECT ON dbname.* TO 'devuser'@'localhost';
SQL
복사
MySQL 권한 종류 (주요 권한)
권한
설명
SELECT
조회
INSERT
행 삽입
UPDATE
행 수정
DELETE
행 삭제
CREATE
데이터베이스/테이블 생성
DROP
테이블/데이터베이스 삭제
INDEX
인덱스 생성 및 삭제
ALTER
테이블 구조 변경
EXECUTE
저장 프로시저 실행
REFERENCES
외래 키 참조 권한
LOCK TABLES
테이블 잠금 권한
SHOW VIEW
뷰 보기 권한
CREATE VIEW
뷰 생성 권한
다양한 권한을 포함한 사용자 권한 부여 쿼리
CREATE USER 'devuser'@'localhost' IDENTIFIED BY 'DevPass123!'; GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, EXECUTE, CREATE VIEW, SHOW VIEW, LOCK TABLES ON myappdb.* TO 'devuser'@'localhost'; FLUSH PRIVILEGES;
SQL
복사
부여된 권한 설명:
SELECT, INSERT, UPDATE, DELETE: 데이터 조작 (CRUD)
CREATE, DROP, ALTER: 테이블 생성/삭제/수정
INDEX: 인덱스 생성 및 제거
EXECUTE: 저장 프로시저 실행
CREATE VIEW, SHOW VIEW: 뷰 관련 작업
LOCK TABLES: 명시적인 테이블 잠금 사용 가능
!주의 - 너무 많은 권한을 부여하지 말 것
운영 환경에서는 ALL PRIVILEGESDROP, ALTER, CREATE 등은 꼭 필요한 사용자에만 부여한다.
특히 외부에서 접속 가능한 사용자(@'%')는 최소 권한 원칙을 따르는 것이 좋다.

4. 권한 적용

FLUSH PRIVILEGES;
SQL
복사
MySQL 8.0 이상에서는 FLUSH PRIVILEGES가 자동 적용되지만, 명시적으로 넣어주는 것이 안전하다.

5. 권한 확인 (선택)

SHOW GRANTS FOR 'devuser'@'localhost';
SQL
복사

6. 사용자 삭제 (필요 시)

DROP USER 'devuser'@'localhost';
SQL
복사

전체 흐름

CREATE USER 'devuser'@'localhost' IDENTIFIED BY 'DevPass123!'; GRANT ALL PRIVILEGES ON myappdb.* TO 'devuser'@'localhost'; FLUSH PRIVILEGES;
SQL
복사