MySQL 오류 1396(HY000)이란?
MySQL에서 사용자를 생성하거나 삭제할 때 "ERROR 1396 (HY000): Operation CREATE USER failed"라는 오류 메시지가 나타나는 경우가 있습니다. 이 오류는 주로 다음과 같은 원인으로 발생합니다.
- 생성하려는 사용자가 이미 존재하는 경우
- mysql.user 테이블의 행을 직접 DELETE로 삭제하여 사용자 정보가 불완전하게 남아 있는 경우
- DROP USER 없이 시스템 테이블을 수동으로 조작한 경우
이 문제를 해결하는 가장 확실한 방법은 CREATE USER와 DROP 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을 안정적으로 해결하고 사용자 계정을 정상적으로 관리할 수 있습니다.