XAMPP 웹 서버 제어판을 통해 MySQL 서버를 시작하려고 할 때 'Error: MySQL shutdown unexpectedly'(MySQL이 예기치 않게 종료되었습니다) 오류 메시지가 표시되는 사용자들이 있습니다. 이 문제는 컴퓨터에 XAMPP를 재설치한 후에 나타나는 경우도 많습니다. 주된 원인은 MySQL 파일이 손상되었거나 깨진 것으로, 이 경우 mysql 디렉터리에 포함된 backup(백업) 폴더를 활용해야 합니다. 이 글에서는 해당 오류를 해결하는 전 과정을 단계별로 자세히 안내해 드립니다.

XAMPP는 편리하고 사용하기 쉬운 웹 서버 환경을 제공하지만, localhost 연결 거부 오류 등 몇 가지 알려진 문제점도 함께 가지고 있습니다. 많은 사용자가 이 오류를 접하면 데이터베이스 자체가 손상되었다고 생각하지만, 실제로는 그렇지 않은 경우가 대부분입니다. 데이터를 잃어버릴 걱정 없이 비교적 간단한 방법으로 문제를 해결할 수 있습니다.
인터넷에는 mysql 디렉터리 내의 ibdata1 파일을 삭제하라는 해결책도 돌아다니는데, 주의가 필요합니다. ibdata1 파일은 InnoDB 스토리지 엔진의 시스템 테이블스페이스 역할을 하는 중요한 파일입니다. 이 파일을 삭제하면 일부 경우에는 문제가 해결될 수 있지만, 데이터베이스 전체를 사용할 수 없게 만들 가능성도 매우 높습니다. 따라서 저장된 데이터가 더 이상 필요 없는 특수한 상황이 아니라면 삭제는 권장하지 않습니다.
이 문제를 해결하는 핵심 방법은 mysql 디렉터리의 backup 폴더를 이용해 data 폴더의 내용을 교체하는 것입니다. 또한 오류 발생 전에 MySQL 서비스가 이미 실행 중이었다면 그것이 원인일 수도 있으므로, 이 경우 서비스를 중지한 후 문제가 해결되는지 확인해야 합니다. 지금부터 각 해결 방법을 하나씩 살펴보겠습니다.
방법 1: MySQL 백업 폴더 활용하기
'MySQL이 예기치 않게 종료되었습니다' 오류가 발생했다면, mysql 디렉터리의 backup 폴더에 저장된 백업 파일을 활용하는 것이 가장 확실한 방법입니다. 이 폴더는 XAMPP에 기본적으로 포함되어 있으며, 진행 과정도 비교적 간단합니다. 작업을 시작하기 전에 혹시 모를 상황에 대비해 데이터베이스를 미리 백업해 두는 것이 좋습니다.
이 방법의 원리는 mysql 디렉터리 안의 data 폴더 내용을 backup 폴더의 내용으로 교체하는 것입니다. 이 과정에서 기존 데이터가 사라지지 않으므로 안심하고 진행하셔도 됩니다. 아래 순서대로 따라 해 보세요.
- 먼저 XAMPP 웹 서버를 완전히 종료합니다.
- 웹 서버를 종료한 후 XAMPP가 설치된 폴더로 이동합니다. 기본 설치 경로는 C:\xampp입니다.

- xampp 폴더 안에서 mysql 폴더를 엽니다.

- mysql 폴더에서 data 폴더를 찾아 이름을 data_old로 변경합니다.
- 그다음 mysql 디렉터리에서 마우스 오른쪽 버튼을 클릭하고 새로 만들기 > 폴더를 선택해 새 폴더를 생성한 뒤, 이름을 data로 지정합니다.
- data 폴더 생성 후 backup 폴더를 열어 그 안의 내용 전체를 복사하여 새로 만든 data 폴더에 붙여넣습니다.
- 이제 data_old 폴더로 돌아가 여기에 있는 데이터베이스 폴더들을 새 data 폴더로 복사합니다.
참고: data_old 폴더에서 mysql, performance_schema, phpmyadmin 폴더는 건너뛰고 복사하지 마세요.

- 복사가 끝나면 data_old 폴더에 있는 ibdata1 파일을 복사하여 새 data 폴더 안의 동일한 파일을 덮어씁니다.
- 모든 과정이 완료되면 XAMPP를 관리자 권한으로 실행합니다. XAMPP 제어판이 열리면 MySQL 서버를 시작해 문제가 해결되었는지 확인합니다.
방법 2: 셸(Shell)로 MySQL 데이터베이스 복구하기
위 방법 외에도 XAMPP 제어판에 내장된 Shell을 이용해 MySQL 서버를 복구하는 방법을 시도해 볼 수 있습니다. 명령줄 방식을 선호하는 분들에게 적합한 해결책입니다. 먼저 셸을 통해 MySQL 서버를 시작한 다음, 다른 셸 창에서 데이터베이스를 복구하는 방식입니다. 아래 지침을 따르세요.
- XAMPP 제어판을 실행합니다.
- 제어판에서 Shell 버튼을 클릭해 셸 창을 엽니다.

- 셸이 열리면 아래 명령어를 입력해 MySQL을 시작합니다.
mysqld --console --skip-grant-tables --skip-external-locking
- 이후 제어판에서 새로운 셸 창을 하나 더 엽니다.
- 새 셸 창에 아래 명령어를 입력해 데이터베이스를 복구합니다.
mysqlcheck -r --databases mysql --use-frm
- 복구가 완료되면 첫 번째 셸 창에서 MySQL을 중지하고 두 셸 창을 모두 닫습니다.
- 마지막으로 MySQL을 다시 시작해 문제가 계속되는지 확인합니다.
방법 3: MySQL 서비스 중지하기
경우에 따라 MySQL 서비스 자체가 원인이 되는 경우도 있습니다. XAMPP 제어판을 통해 MySQL 서버를 시작하기 전에 Windows의 MySQL 서비스가 이미 실행 중이라면 충돌이 발생할 수 있습니다. 이럴 때는 Windows 서비스 창에서 MySQL 서비스를 중지하면 됩니다. 시스템에서 실행 중인 서비스는 오작동 시 다양한 문제를 일으킬 수 있지만, 서비스를 중지하는 것만으로 간단히 해결되므로 크게 걱정할 필요는 없습니다. 아래 순서대로 진행하세요.
- 키보드에서 Windows 키 + R을 눌러 실행(Run) 대화 상자를 엽니다.
- 실행 창에 services.msc를 입력하고 Enter 키를 누릅니다.

- 열린 서비스 창에서 시스템에 등록된 모든 서비스 목록을 확인할 수 있습니다.
- 목록에서 MySQL 서비스를 찾아 마우스 오른쪽 버튼으로 클릭한 뒤, 드롭다운 메뉴에서 중지(Stop)를 선택합니다.
- 또는 MySQL 서비스를 클릭해 선택한 후 좌측의 중지 버튼을 눌러도 됩니다.

- 서비스가 완전히 중지될 때까지 기다린 후, XAMPP 제어판에서 MySQL 서버를 직접 시작해 문제가 해결되었는지 확인합니다.
방법 4: 클라이언트 및 서버 포트 변경하기
MySQL 서버가 사용하는 포트가 문제의 원인일 수도 있습니다. MySQL이 사용하려는 포트를 다른 서비스가 이미 점유하고 있거나, 해당 포트가 시스템에서 차단되어 있는 경우 이런 상황이 발생합니다. 이 문제를 해결하려면 my.ini 파일에서 클라이언트와 서버 포트를 변경해야 합니다. 아래 지침을 참고하세요.
- Windows 탐색기를 열고 xampp 설치 디렉터리로 이동합니다.

- xampp 폴더 안에서 mysql > bin 경로로 들어갑니다.
- bin 폴더에서 my.ini 파일을 메모장으로 엽니다. 파일을 마우스 오른쪽 버튼으로 클릭한 후 연결 프로그램 > 메모장을 선택하면 됩니다.
- my.ini 파일이 열리면 아래 이미지와 같이 client와 server 포트 설정 부분을 찾아 값을 변경합니다.

- 파일을 저장한 후 XAMPP를 다시 실행합니다.
- 마지막으로 MySQL 서버를 시작해 오류가 사라졌는지 확인합니다.