Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 오류 1396(HY000): CREATE USER 작업 실패 해결 방법

MySQL 오류 1396(HY000)이란?

MySQL에서 사용자를 생성하거나 삭제할 때 "ERROR 1396 (HY000): Operation CREATE USER failed"라는 오류 메시지가 나타나는 경우가 있습니다. 이 오류는 주로 다음과 같은 원인으로 발생합니다.

  • 생성하려는 사용자가 이미 존재하는 경우
  • mysql.user 테이블의 행을 직접 DELETE로 삭제하여 사용자 정보가 불완전하게 남아 있는 경우
  • DROP USER 없이 시스템 테이블을 수동으로 조작한 경우

이 문제를 해결하는 가장 확실한 방법은 CREATE USERDROP USER 구문을 올바르게 사용하는 것입니다. 아래에서 정상적인 사용자 생성 과정을 단계별로 살펴보겠습니다.

1단계: 사용자 생성하기

먼저 CREATE USER 구문을 사용해 새 사용자를 생성합니다. 사용자 이름과 호스트, 비밀번호를 함께 지정합니다.

mysql> CREATE USER 'Emma'@'localhost' IDENTIFIED BY 'emma_654';
Query OK, 0 rows affected (0.00 sec)

위 명령어가 성공적으로 실행되면 Emma라는 사용자가 localhost 호스트에 생성됩니다.

2단계: 생성된 사용자 확인하기

사용자가 정상적으로 등록되었는지 확인하려면 mysql.user 테이블을 조회합니다.

mysql> SELECT user, host FROM mysql.user;

위 쿼리를 실행하면 모든 사용자와 해당 호스트 목록이 출력됩니다. 방금 생성한 Emma 사용자가 목록에 포함되어 있는지 확인할 수 있습니다.

+------------------+-----------+
| user             |      host |
+------------------+-----------+
| Bob              |         % |
| Charlie          |         % |
| Robert           |         % |
| User2            |         % |
| mysql.infoschema |         % |
| mysql.session    |         % |
| mysql.sys        |         % |
| root             |         % |
| @UserName@       | localhost |
| Adam             | localhost |
| Adam Smith       | localhost |
| Chris            | localhost |
| David            | localhost |
| Emma             | localhost |
| Jace             | localhost |
| James            | localhost |
| John             | localhost |
| John Doe         | localhost |
| Michael          | localhost |
| Mike             | localhost |
| Robert           | localhost |
| User1            | localhost |
| am               | localhost |
| hbstudent        | localhost |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
+------------------+-----------+
26 rows in set (0.00 sec)

출력 결과에서 Emma@localhost 사용자가 정상적으로 등록된 것을 확인할 수 있습니다.

오류 발생 시 추가 해결 방법

만약 동일한 이름의 사용자가 이미 존재한다고 의심되거나, 오류가 계속 발생한다면 다음 절차를 따라 해보세요.

기존 사용자 삭제 후 재생성

사용자 정보가 손상되었을 가능성이 있다면 DROP USER로 기존 사용자를 완전히 제거한 뒤 다시 생성합니다.

mysql> DROP USER 'Emma'@'localhost';
Query OK, 0 rows affected (0.01 sec)

mysql> CREATE USER 'Emma'@'localhost' IDENTIFIED BY 'emma_654';
Query OK, 0 rows affected (0.00 sec)

FLUSH PRIVILEGES 실행

권한 테이블이 제대로 갱신되지 않은 경우 FLUSH PRIVILEGES 명령으로 권한 캐시를 초기화하면 문제가 해결될 수 있습니다.

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

정리

MySQL 오류 1396(HY000)은 대부분 중복된 사용자 계정 또는 손상된 사용자 정보 때문에 발생합니다. 핵심 해결 방법은 다음과 같습니다.

  • 사용자 생성 전 SELECT user, host FROM mysql.user;로 기존 계정 존재 여부를 먼저 확인합니다.
  • mysql.user 테이블의 행을 직접 DELETE하지 말고 반드시 DROP USER 구문을 사용합니다.
  • 문제가 지속되면 DROP USER 후 재생성하고, 필요시 FLUSH PRIVILEGES를 실행합니다.

이러한 절차를 따르면 오류 1396을 안정적으로 해결하고 사용자 계정을 정상적으로 관리할 수 있습니다.