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에서 사용자에게 부여된 권한을 다른 사용자에게도 부여할 수 있도록 허용하는 강력한 옵션
'CS > Database' 카테고리의 다른 글
[DB] DB 접속 정보 (0) | 2025.03.17 |
---|---|
[MySQL/Oracle] MySQL과 Oracle 데이터베이스 및 스키마 구조 비교 (0) | 2025.03.12 |
[MySQL] mysql cli syntax highlighter mycli (0) | 2022.09.01 |
[MySQL] MySQL 서버 실행 확인, 데이터베이스 생성 (+ MySQL Unknown database 해결) (0) | 2022.08.31 |
[MySQL] MySQL user 목록, 추가 (0) | 2022.08.31 |
댓글