MySQL에서 사용자 계정의 생성 정보를 확인하는 방법 중 하나가 SHOW CREATE USER 명령어이다.
이 명령어를 사용하면 해당 사용자의 계정 설정을 확인하고, 다른 환경에서 동일한 계정을 생성할 때 활용할 수 있다.

1. SHOW CREATE USER란?
SHOW CREATE USER 명령어는 특정 사용자의 계정 생성 정보를 보여주는 SQL 명령어다.
이 명령어를 실행하면 계정의 인증 플러그인, 비밀번호 정책, 계정 잠금 여부 등 계정 생성과 관련된 주요 정보가 출력된다.
SHOW CREATE USER 기본 구문
SHOW CREATE USER '사용자명'@'호스트';
- 특정 사용자('사용자명'@'호스트')의 계정 생성 정보를 확인할 수 있다.
- MySQL 8.0 이상에서 지원되며, 이전 버전에서는 사용할 수 없다.
- 해당 사용자에 대한 CREATE USER 명령어 형태로 정보를 출력한다.
2. SHOW CREATE USER 실행 예제
예제 1: 특정 사용자 계정 정보 확인
사용자 'admin'@'localhost'의 계정 정보를 확인하는 예제다.
SHOW CREATE USER 'admin'@'localhost';
출력 결과 예시:
+-----------------------------------------------------------+
| CREATE USER for admin@localhost |
+-----------------------------------------------------------+
| CREATE USER 'admin'@'localhost' IDENTIFIED WITH 'mysql_native_password' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK |
+-----------------------------------------------------------+
이 결과에서 해당 계정이 어떤 방식으로 생성되었는지 알 수 있다.
- IDENTIFIED WITH 'mysql_native_password' → 이 계정은 mysql_native_password 인증 플러그인을 사용하여 인증됨
- REQUIRE NONE → 비밀번호 관련 요구사항이 없음
- PASSWORD EXPIRE DEFAULT → 비밀번호 만료 정책이 기본 설정
- ACCOUNT UNLOCK → 계정이 잠겨있지 않음
예제 2: 여러 사용자 계정 정보 확인
만약 여러 사용자 계정을 동시에 확인하고 싶다면 각각 실행해야 한다.
예를 들어, 'user1'@'localhost'와 'user2'@'%' 계정의 정보를 조회할 경우:
SHOW CREATE USER 'user1'@'localhost';
SHOW CREATE USER 'user2'@'%';
출력 결과:
CREATE USER 'user1'@'localhost' IDENTIFIED WITH 'caching_sha2_password' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK;
CREATE USER 'user2'@'%' IDENTIFIED WITH 'mysql_native_password' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK;
위 예제에서 user1과 user2가 각각 다른 인증 플러그인을 사용하고 있는 것을 확인할 수 있다.
- caching_sha2_password는 MySQL 8.0의 기본 인증 플러그인
- mysql_native_password는 이전 버전과의 호환성을 위한 인증 방식
3. SHOW CREATE USER 활용 사례
1) 동일한 계정을 다른 환경에서 생성할 때
운영 환경에서 특정 계정을 동일하게 복제하려면, SHOW CREATE USER로 확인한 정보를 이용하여 새 환경에서 계정을 생성할 수 있다.
예제:
CREATE USER 'admin'@'localhost' IDENTIFIED WITH 'mysql_native_password' BY 'StrongPass123!';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
위와 같이 생성하면 원래 계정과 동일한 환경에서 사용할 수 있다.
2) 사용자 계정 보안 점검
SHOW CREATE USER를 사용하면 특정 계정이 안전한 설정을 가지고 있는지 확인할 수 있다.
예를 들어, 특정 계정이 ACCOUNT LOCK 상태인지 확인하려면:
SHOW CREATE USER 'hacker'@'%';
출력 결과:
CREATE USER 'hacker'@'%' IDENTIFIED WITH 'mysql_native_password' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT LOCK;
- ACCOUNT LOCK이 설정되어 있으면 해당 계정이 비활성화된 상태임을 의미한다.
- 보안상 문제가 있는 계정을 잠그고 싶다면 다음 명령어를 실행하면 된다.
ALTER USER 'hacker'@'%' ACCOUNT LOCK;
4. SHOW CREATE USER 사용 시 주의할 점
- MySQL 8.0 이상에서만 사용 가능
- MySQL 5.7 이하 버전에서는 SHOW CREATE USER 명령어를 지원하지 않는다.
- MySQL 5.7 이하에서는 mysql.user 테이블을 직접 조회해야 한다.
- SUPER 권한 필요
- SHOW CREATE USER를 실행하려면 해당 계정에 대한 접근 권한이 있어야 한다.
- 일반 사용자는 자신의 계정 정보만 조회할 수 있으며, 다른 사용자의 정보를 보려면 관리자(root) 계정이 필요하다.
- 보안상 중요한 정보가 포함될 수 있음
- 출력된 정보에는 계정의 인증 방식, 비밀번호 정책, 계정 상태 등이 포함되므로, 보안에 주의해야 한다.
- 민감한 계정 정보를 다른 곳에 노출하지 않도록 주의해야 한다.
5. MySQL 사용자 계정 관련 추가 명령어
사용자 계정 목록 조회
SELECT user, host FROM mysql.user;
- 현재 데이터베이스에 등록된 모든 사용자 계정을 확인할 수 있다.
비밀번호 변경
ALTER USER 'admin'@'localhost' IDENTIFIED BY 'NewSecurePass!';
- ALTER USER 명령어를 사용하여 비밀번호를 변경할 수 있다.
계정 삭제
DROP USER 'testuser'@'localhost';
- 더 이상 필요하지 않은 사용자 계정을 삭제할 때 사용한다.
6. 마무리
MySQL의 SHOW CREATE USER 명령어는 특정 사용자 계정의 생성 정보를 확인하는 데 유용한 SQL 문장이다.
특히, 계정 복제, 보안 점검, 비밀번호 정책 확인 등의 목적으로 활용할 수 있다.
MySQL 8.0 이상에서만 지원되며, SUPER 권한이 있어야 사용할 수 있다.
보안이 중요한 환경에서는 ACCOUNT LOCK 상태를 확인하여 비활성화된 계정을 점검하는 것도 중요하다.
공식 가이드 문서
MySQL SHOW CREATE USER 공식 문서:
https://dev.mysql.com/doc/refman/8.0/en/show-create-user.html
'DB' 카테고리의 다른 글
[MySQL] RESET PASSWORD 완벽 가이드 사용법(비밀번호 변경) (0) | 2025.04.02 |
---|---|
[MySQL] SHOW PRIVILEGES 완벽 가이드 사용법(모든 권한 확인) (0) | 2025.04.02 |
[MySQL] UNLOCK TABLES 완벽 가이드 사용법(테이블 잠금 해제) (0) | 2025.04.02 |
[MySQL] LOCK TABLES 완벽 가이드 사용법(테이블 잠금) (0) | 2025.04.02 |
[MySQL] FLUSH PRIVILEGES 완벽 가이드 사용법(캐시 갱신) (0) | 2025.04.02 |
[MySQL] SHOW GRANTS 완벽 가이드 사용법(사용자 권한 확인) (0) | 2025.04.02 |
[MySQL] SET PASSWORD 완벽 가이드 사용법(비밀번호 변경) (0) | 2025.04.02 |
[MySQL] RENAME USER 완벽 가이드 사용법(사용자 계정명 변경) (0) | 2025.04.01 |