MySQL CREATE USER 문에 대한 이해
소개
MySQL에서 CREATE USER 문은 데이터베이스 사용자 계정을 새로 생성할 때 사용됩니다. 이 문을 통해 사용자는 데이터베이스에 접속할 수 있도록 인증(로그인) 자격을 부여받습니다. CREATE USER는 주로 데이터베이스 보안을 강화하고 사용자별 접근 권한을 관리할 때 핵심 역할을 합니다.
이 글에서는 CREATE USER 구문의 기본 사용법, 선택적으로 추가할 수 있는 속성들, 그리고 실제 사용 예제를 살펴보겠습니다.
주요 특징
- 새로운 사용자 계정 생성
- 사용자 이름과 인증 정보를 명확히 지정 가능
- 비밀번호 요구 사항이나 기본 호스트를 설정 가능
CREATE USER 기본 구문
CREATE USER 구문은 다음과 같습니다:
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
- username: 새로 생성할 사용자의 이름입니다.
- host: 사용자가 접속할 수 있는 호스트를 지정합니다. 예를 들어, localhost는 로컬 네트워크에서만 접속하도록 제한합니다. %를 사용하면 모든 호스트에서 접속 가능하도록 설정할 수 있습니다.
- password: 사용자의 비밀번호를 지정합니다.
사용 예시
기본 사용자 생성
CREATE USER 'john_doe'@'localhost' IDENTIFIED BY 'securepassword123';
위 예시는 john_doe라는 사용자 계정을 생성하며, 이 계정은 localhost에서만 접속할 수 있습니다. 비밀번호는 securepassword123입니다.
모든 호스트에서 접근 가능한 사용자 생성
CREATE USER 'jane_doe'@'%' IDENTIFIED BY 'anothersecurepassword!';
여기서는 jane_doe 계정이 생성되며, %를 사용해 네트워크의 모든 호스트에서 접속할 수 있도록 허용합니다.
비밀번호 인증 없이 사용자 생성
CREATE USER 'guest_user'@'localhost';
비밀번호 인증 없이 guest_user 계정을 생성하지만, 보안상 이는 권장되지 않습니다. 이후에 ALTER USER를 사용해 비밀번호를 설정할 수도 있습니다.
SSL 인증을 요구하는 사용자 생성
CREATE USER 'ssl_user'@'%' REQUIRE SSL;
이 경우, ssl_user는 SSL 연결을 통해서만 접근할 수 있습니다. 이는 데이터베이스 연결의 보안을 강화하는 방법 중 하나입니다.
추가적인 속성 옵션
MySQL의 CREATE USER에는 다양한 추가 속성을 포함할 수 있습니다:
- DEFAULT ROLE: 기본 역할을 설정합니다.
- PASSWORD EXPIRE: 비밀번호 만료를 설정합니다.
- ACCOUNT LOCK: 계정을 잠그는 옵션입니다.
예: 비밀번호 만료와 계정 잠금 설정
CREATE USER 'locked_user'@'localhost' IDENTIFIED BY 'TempPass1!' PASSWORD EXPIRE ACCOUNT LOCK;
위 구문은 locked_user 계정을 생성하며, 계정은 잠긴 상태로 생성됩니다. 사용자는 비밀번호 변경 후 잠금 해제를 통해 계정을 사용할 수 있습니다.
주의사항
1. 계정을 생성했더라도 기본적으로 권한은 부여되지 않습니다. 권한을 부여하려면 GRANT 문을 사용해야 합니다.
2. 호스트 설정은 보안에 중요한 역할을 합니다. 적절히 제한하지 않으면 무분별한 접근이 가능해질 수 있습니다.
3. 비밀번호 복잡성 규정을 준수하는 강력한 비밀번호를 사용하는 것이 좋습니다.
결론
MySQL의 CREATE USER 문은 새로운 데이터베이스 사용자를 선언하는 기본이 되는 기능입니다. 보안을 강화하기 위해선 강력한 비밀번호를 설정하고, 네트워크 접근 제어를 신중히 설정해야 합니다. 이후 권한 관리를 통해 각 사용자에게 필요한 최소 권한만 부여하면 보다 안전한 데이터베이스 환경을 구축할 수 있습니다.
참고 자료
- [MySQL 공식 문서: CREATE USER 문](https://dev.mysql.com/doc/refman/8.0/en/create-user.html)
'SQL > MYSQL' 카테고리의 다른 글
[MySQL] Index Merge 문 사용 방법 및 예시 (0) | 2025.01.31 |
---|---|
[MySQL] DROP ROLE 사용 방법 및 예시 (0) | 2025.01.31 |
[MySQL] Range 기능 사용 방법 및 예시 (0) | 2025.01.23 |
[MySQL] WHERE 절 사용 방법 및 예시 (0) | 2025.01.22 |
[MySQL] CREATE ROLE 문 사용 방법 및 예시 (1) | 2025.01.22 |
[MySQL] ALTER USER 문 사용 방법 및 예시 (0) | 2025.01.20 |
[MySQL] Scope Rules for Handlers 문 사용 방법 및 예시 (0) | 2025.01.17 |
[MySQL] SIGNAL 문 사용 방법 및 예시 (0) | 2025.01.14 |