DB

[MySQL] CREATE USER 완벽 가이드 사용법(사용자 생성)

인생아 2025. 2. 24. 23:37
반응형

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

반응형