1. CREATE USER 명령어란?
MySQL에서 새로운 사용자를 생성하려면 CREATE USER 명령어를 사용한다.
이 명령어는 MySQL 서버에 새로운 계정을 추가하며, 사용자에게 특정한 인증 방법과 속성을 설정할 수 있다.
기본 구문
CREATE USER '사용자명'@'호스트' IDENTIFIED BY '비밀번호';
- '사용자명'@'호스트' : 생성할 사용자의 이름과 접속할 호스트를 지정
- IDENTIFIED BY '비밀번호' : 해당 사용자의 비밀번호를 설정
예제 1: 로컬 호스트에서 접근할 수 있는 사용자 생성
CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'password123';
위 명령어를 실행하면 testuser 계정이 생성되며, 이 계정은 오직 localhost(MySQL 서버가 설치된 컴퓨터)에서만 접속할 수 있다.
예제 2: 모든 IP에서 접근 가능한 사용자 생성
CREATE USER 'globaluser'@'%' IDENTIFIED BY 'securePass!';
여기서 '%' 는 모든 IP 주소에서의 접근을 허용하는 와일드카드이다. 즉, 이 사용자는 원격에서 MySQL 서버에 접속할 수 있다.
2. 사용자 호스트 설정
MySQL에서 사용자는 '사용자명'@'호스트' 형태로 정의되므로, 같은 사용자명이라도 호스트가 다르면 다른 계정으로 취급된다.
예제 3: 같은 사용자명, 다른 호스트
CREATE USER 'devuser'@'localhost' IDENTIFIED BY 'devpass';
CREATE USER 'devuser'@'192.168.1.100' IDENTIFIED BY 'networkpass';
- devuser@localhost : 로컬에서만 접속 가능
- devuser@192.168.1.100 : 특정 IP에서만 접속 가능
이처럼 같은 사용자명을 사용하더라도 호스트에 따라 접속 권한이 달라질 수 있으므로 주의가 필요하다.
3. 사용자 비밀번호 관리
MySQL에서는 사용자의 비밀번호 정책을 설정할 수 있으며, 비밀번호 변경도 가능하다.
비밀번호 변경
ALTER USER 'testuser'@'localhost' IDENTIFIED BY 'newpassword!';
위 명령어를 실행하면 testuser 계정의 비밀번호가 newpassword! 로 변경된다.
비밀번호 만료 정책 설정
특정 사용자의 비밀번호를 만료 상태로 설정하여 변경을 강제할 수도 있다.
ALTER USER 'testuser'@'localhost' PASSWORD EXPIRE;
이렇게 하면 testuser가 로그인할 때 비밀번호를 새로 설정해야 한다.
4. 인증 플러그인 지정
MySQL에서는 다양한 인증 플러그인을 사용할 수 있다. 기본적으로는 caching_sha2_password가 사용되지만, 필요에 따라 mysql_native_password 등으로 변경할 수 있다.
예제 4: 인증 플러그인 지정하여 사용자 생성
CREATE USER 'shauser'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'mypassword';
CREATE USER 'nativeuser'@'%' IDENTIFIED WITH mysql_native_password BY 'mypassword';
- caching_sha2_password : MySQL 8.0에서 기본으로 사용되는 보안성이 높은 방식
- mysql_native_password : MySQL 5.x에서 주로 사용되던 방식 (이전 버전과의 호환성이 필요할 때 사용)
5. 사용자 삭제
생성한 사용자가 더 이상 필요 없을 경우, DROP USER 명령어를 사용하여 삭제할 수 있다.
예제 5: 사용자 삭제
DROP USER 'testuser'@'localhost';
이 명령어를 실행하면 testuser@localhost 계정이 삭제되며, 더 이상 데이터베이스에 접근할 수 없게 된다.
6. 사용자 확인
현재 MySQL 서버에 존재하는 사용자 목록을 조회하고 싶다면 mysql.user 테이블을 확인하면 된다.
예제 6: 사용자 목록 조회
SELECT User, Host FROM mysql.user;
이 명령어를 실행하면 MySQL에 등록된 모든 사용자와 해당 사용자의 접속 가능한 호스트 정보가 출력된다.
7. 사용자 권한 확인 및 변경
사용자가 가지고 있는 권한을 확인하려면 다음 명령어를 사용할 수 있다.
예제 7: 특정 사용자 권한 조회
SHOW GRANTS FOR 'testuser'@'localhost';
만약 특정 권한을 부여하고 싶다면 GRANT 명령어를 사용하면 된다.
예제 8: 사용자에게 SELECT 권한 부여
GRANT SELECT ON mydatabase.* TO 'testuser'@'localhost';
이 명령어는 mydatabase 데이터베이스에 대해 testuser가 SELECT(조회)만 가능하도록 설정한다.
예제 9: 모든 권한 부여
GRANT ALL PRIVILEGES ON *.* TO 'adminuser'@'localhost' WITH GRANT OPTION;
- ALL PRIVILEGES : 모든 권한을 부여
- WITH GRANT OPTION : 해당 사용자가 다른 사용자에게도 권한을 부여할 수 있도록 허용
8. 사용자 권한 회수
반대로 특정 권한을 회수하려면 REVOKE 명령어를 사용한다.
예제 10: 특정 권한 회수
REVOKE SELECT ON mydatabase.* FROM 'testuser'@'localhost';
이제 testuser는 mydatabase에서 데이터를 조회할 수 없게 된다.
마무리
MySQL의 CREATE USER 명령어는 데이터베이스 보안과 사용자 관리에 있어 매우 중요한 기능이다.
사용자를 생성하는 기본적인 방법부터 비밀번호 설정, 인증 플러그인 변경, 권한 부여 및 회수까지 자세히 알아보았다.
실제 운영 환경에서는 보안 강화를 위해 강력한 비밀번호 정책을 설정하고, 최소한의 권한만 부여하는 것이 중요하다.
공식 가이드 문서
MySQL CREATE USER 공식 문서:
https://dev.mysql.com/doc/refman/8.0/en/create-user.html
'DB' 카테고리의 다른 글
[MySQL] CREATE SPATIAL INDEX 완벽 가이드 사용법(공간 데이터 검색을 위한 고성능 인덱스) (0) | 2025.02.20 |
---|---|
[MySQL] SET DEFAULT ROLE 완벽 가이드 사용법(사용자 권한 관리) (0) | 2025.02.20 |
[MySQL] CREATE FULLTEXT INDEX 완벽 가이드 사용법(전문 검색[Full-Text Search] 인덱스 활용) (1) | 2025.02.20 |
[MySQL] RESET SLAVE / RESET REPLICA 완벽 가이드 사용법(복제 환경 초기화 및 재설정) (0) | 2025.02.20 |
[MySQL] PURGE BINARY LOGS 완벽 가이드 사용법(바이너리 로그 정리) (0) | 2025.02.20 |
[MySQL] DROP SERVER 완벽 가이드 사용법(원격 서버 삭제) (0) | 2025.02.20 |
[MySQL] ALTER SERVER 완벽 가이드 사용법(원격 데이터 소스 수정) (0) | 2025.02.20 |
[MySQL] CREATE SERVER 완벽 가이드 사용법(원격 데이터 소스 등록) (0) | 2025.02.19 |