DB

[MySQL] SHOW CREATE USER 완벽 가이드 사용법(계정 생성 정보 확인)

인생아 2025. 4. 2. 21:26
반응형

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_passwordMySQL 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 사용 시 주의할 점

  1. MySQL 8.0 이상에서만 사용 가능
    • MySQL 5.7 이하 버전에서는 SHOW CREATE USER 명령어를 지원하지 않는다.
    • MySQL 5.7 이하에서는 mysql.user 테이블을 직접 조회해야 한다.
  2. SUPER 권한 필요
    • SHOW CREATE USER를 실행하려면 해당 계정에 대한 접근 권한이 있어야 한다.
    • 일반 사용자는 자신의 계정 정보만 조회할 수 있으며, 다른 사용자의 정보를 보려면 관리자(root) 계정이 필요하다.
  3. 보안상 중요한 정보가 포함될 수 있음
    • 출력된 정보에는 계정의 인증 방식, 비밀번호 정책, 계정 상태 등이 포함되므로, 보안에 주의해야 한다.
    • 민감한 계정 정보를 다른 곳에 노출하지 않도록 주의해야 한다.

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

 

반응형