본문 바로가기
CS/Database

[MySQL] MySQL 데이터베이스 생성, 권한 부여

by clolee 2025. 3. 10.

mysql 데이터베이스 생성, 권한 부여

MySQL 데이터베이스 생성, 사용자 계정 생성 및 권한 부여는 데이터베이스 관리의 핵심 과정입니다. 각 단계별로 다양한 옵션을 통해 유연하게 설정할 수 있습니다.

1. 데이터베이스 생성 (CREATE DATABASE)

  • 기본 생성:
    • CREATE DATABASE 데이터베이스명;
    • 가장 기본적인 데이터베이스 생성 명령입니다.
  • 문자 집합 및 콜레이션 지정:
    • CREATE DATABASE 데이터베이스명 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    • 데이터베이스의 문자 집합(Character Set)과 콜레이션(Collation)을 지정합니다. 이는 데이터 저장 및 비교 방식에 영향을 미칩니다. utf8mb4는 다양한 언어와 이모티콘을 지원하며, utf8mb4_unicode_ci는 대소문자를 구분하지 않는 비교 방식을 제공합니다.
  • 존재 여부 확인 후 생성:
    • CREATE DATABASE IF NOT EXISTS 데이터베이스명;
    • 데이터베이스가 이미 존재할 경우 오류를 발생시키지 않고, 존재하지 않을 경우에만 생성합니다.

2. 사용자 계정 생성 (CREATE USER)

  • 기본 생성:
    • CREATE USER '사용자명'@'호스트' IDENTIFIED BY '비밀번호';
    • 사용자명, 접속 호스트, 비밀번호를 지정하여 계정을 생성합니다.
  • 호스트 지정:
    • '사용자명'@'localhost': 로컬 호스트에서만 접속 허용
    • '사용자명'@'%': 모든 호스트에서 접속 허용 (보안상 위험)
    • '사용자명'@'192.168.1.100': 특정 IP 주소에서만 접속 허용
  • 비밀번호 설정:
    • 강력한 비밀번호를 사용하는 것이 좋습니다.
    • MySQL 8.0 이상에서는 비밀번호 정책을 설정하여 복잡성을 강제할 수 있습니다.
  • 비밀번호 만료 설정:
    • ALTER USER '사용자명'@'호스트' PASSWORD EXPIRE;
    • 비밀번호 만료 설정을 통해 주기적인 비밀번호 변경을 유도할 수 있습니다.

3. 권한 부여 (GRANT)

  • 전체 권한 부여:
    • GRANT ALL PRIVILEGES ON 데이터베이스명.* TO '사용자명'@'호스트' (WITH GRANT OPTION);
    • 특정 데이터베이스의 모든 테이블에 대한 모든 권한을 부여합니다.
  • 특정 권한 부여:
    • GRANT SELECT, INSERT, UPDATE ON 데이터베이스명.테이블명 TO '사용자명'@'호스트' (WITH GRANT OPTION);
    • SELECT, INSERT, UPDATE 등 특정 권한만 부여합니다.
  • 읽기 전용 권한 부여:
    • GRANT SELECT ON 데이터베이스명.* TO '사용자명'@'호스트';
    • 데이터 읽기 권한만 부여합니다.
  • 권한 회수:
    • REVOKE 권한 ON 데이터베이스명.* FROM '사용자명'@'호스트';
    • 부여된 권한을 회수합니다.
  • 권한 적용:
    • FLUSH PRIVILEGES;
    • 권한 변경 사항을 즉시 적용합니다.

4. 주의사항

  • 보안을 위해 최소한의 권한만 부여하는 것이 좋습니다.
  • '%' 호스트 사용은 보안상 위험하므로, 특정 호스트를 지정하는 것을 권장합니다.
  • 관리자 계정으로 접속하여 명령을 실행해야 합니다.

 

이러한 옵션들을 조합하여 데이터베이스 환경에 맞는 사용자 계정 및 권한 설정을 할 수 있습니다.

WITH GRANT OPTION은 MySQL에서 사용자에게 부여된 권한을 다른 사용자에게도 부여할 수 있도록 허용하는 강력한 옵션

댓글