MySQL Shutdown Unexpectedly XAMPP: 6 Cara Mengatasinya

Error: MySQL shutdown unexpectedly. This may be due to a blocked port, missing dependencies, improper privileges, a crash, or a shutdown by another method. Press the Logs button to...

MySQL Shutdown Unexpectedly XAMPP: 6 Cara Mengatasinya
Iklan
Error: MySQL shutdown unexpectedly.
This may be due to a blocked port, missing dependencies,
improper privileges, a crash, or a shutdown by another method.
Press the Logs button to view error logs and check
the Windows Event Viewer for more clues

Pesan MySQL shutdown unexpectedly adalah salah satu error XAMPP yang paling sering ditemui, terutama di Windows. Biasanya muncul tiba-tiba: kemarin XAMPP masih normal, hari ini tombol Start MySQL ditekan, statusnya sempat hijau, lalu beberapa detik kemudian mati lagi dan pesan merah di atas muncul di panel bawah XAMPP Control Panel.

Pesan itu sebenarnya tidak menyebut penyebab pastinya. Ia hanya memberi daftar kemungkinan: port terpakai, file yang hilang, hak akses, atau database yang crash. Kabar baiknya, dalam praktik penyebabnya hampir selalu satu dari tiga hal: port 3306 sudah dipakai program lain, file data MySQL rusak karena komputer dimatikan saat MySQL masih jalan, atau masalah hak akses. Artikel ini membahas cara memastikan penyebabnya lebih dulu, lalu solusinya satu per satu dari yang paling aman.

Satu catatan penting sebelum mulai: jangan langsung menghapus atau menginstal ulang XAMPP. Folder C:\xampp\mysql\data berisi semua database Anda. Menginstal ulang tanpa menyelamatkan folder itu sama dengan menghapus seluruh data.

Iklan

Langkah 1: Baca log error, jangan menebak

Pesan di XAMPP Control Panel hanya ringkasan. Penyebab sebenarnya tertulis di file log MySQL. Ada dua cara membukanya:

  • Di XAMPP Control Panel, pada baris MySQL klik tombol Logs, lalu pilih mysql_error.log.
  • Atau buka langsung file C:\xampp\mysql\data\mysql_error.log dengan Notepad.

Gulir ke bagian paling bawah, karena baris terbaru ada di akhir file. Perhatikan baris yang mengandung kata [ERROR]. Berikut pola yang paling umum dan artinya:

Isi logArtiSolusi
Can't start server: Bind on TCP/IP port atau Do you already have another mysqld server running on port: 3306 ?Port 3306 sudah dipakai program lainLangkah 2
InnoDB: ... corrupted, Plugin 'InnoDB' registration as a STORAGE ENGINE failed, Unknown/unsupported storage engine: InnoDBFile data InnoDB rusakLangkah 3 dan 5
Aria recovery failed atau Could not open mysql.plugin tableLog mesin Aria rusakLangkah 4
Access denied, Permission denied, Can't create/write to fileMasalah hak akses folderLangkah 6

Kalau log kosong atau tidak memberi petunjuk, lanjutkan berurutan dari Langkah 2. Urutannya sengaja disusun dari yang paling aman ke yang paling berisiko.

Langkah 2: Cek apakah port 3306 sudah dipakai

MySQL di XAMPP memakai port 3306. Kalau ada program lain yang lebih dulu memakai port itu, MySQL XAMPP akan langsung mati. Pelaku yang paling sering adalah MySQL Server resmi dari Oracle yang terpasang sebagai Windows Service (biasanya bernama MySQL80), aplikasi lain seperti Laragon atau WAMP, atau proses MySQL XAMPP lama yang tidak benar-benar berhenti.

Iklan

Buka Command Prompt, lalu jalankan:

netstat -ano | findstr :3306

Jika ada hasil dengan status LISTENING, angka di kolom paling kanan adalah PID (nomor proses). Cari tahu program apa itu:

tasklist /FI "PID eq 4321"

Ganti 4321 dengan PID yang muncul. Dari sini ada tiga kemungkinan:

  • Hasilnya mysqld.exe dari XAMPP yang "nyangkut". Matikan lewat Task Manager (tab Details, cari mysqld.exe, End task), lalu Start lagi dari XAMPP.
  • Hasilnya MySQL Server lain sebagai Windows Service. Tekan Win + R, ketik services.msc, cari service bernama MySQL atau MySQL80, klik kanan lalu Stop. Agar tidak terulang setelah restart, buka Properties dan ubah Startup type menjadi Manual.
  • Anda memang butuh kedua MySQL tetap jalan. Pindahkan MySQL XAMPP ke port lain, misalnya 3307, seperti di bawah.

Cara mengganti port MySQL XAMPP ke 3307

  1. Di XAMPP Control Panel, baris MySQL, klik Config lalu my.ini.
  2. Ubah port=3306 menjadi port=3307. Ada dua tempat: di bawah bagian [client] dan di bawah bagian [mysqld]. Ubah keduanya.
  3. Agar panel XAMPP ikut tahu port barunya, klik tombol Config di kanan atas panel, pilih Service and Port Settings, tab MySQL, isi Main Port dengan 3307, lalu Save.
  4. Agar phpMyAdmin tetap bisa terhubung, buka C:\xampp\phpMyAdmin\config.inc.php dan tambahkan baris berikut di bawah baris $cfg['Servers'][$i]['host']:
$cfg['Servers'][$i]['port'] = '3307';

Jangan lupa, aplikasi Anda juga harus memakai port baru. Di Laravel, ubah DB_PORT=3307 di file .env. Di PHP native dengan PDO, tambahkan port=3307 pada DSN, contohnya mysql:host=127.0.0.1;port=3307;dbname=toko. Pola koneksi yang aman dibahas di artikel koneksi database MySQL dengan PHP PDO.

Iklan

Langkah 3: Pulihkan dari folder backup bawaan XAMPP

Kalau port tidak bermasalah, penyebab paling umum adalah file data yang rusak. Ini hampir selalu terjadi setelah komputer mati mendadak (listrik padam, baterai laptop habis, atau Windows di-shutdown) saat MySQL masih berjalan. File sistem MySQL rusak, sehingga server tidak bisa menyala lagi.

XAMPP menyediakan salinan bersih file sistem MySQL di folder C:\xampp\mysql\backup. Trik di bawah mengganti file sistem yang rusak dengan salinan bersih itu, sambil mempertahankan database milik Anda. Ikuti urutannya dengan teliti:

  1. Stop MySQL dan tutup XAMPP Control Panel.
  2. Backup dulu. Salin seluruh folder C:\xampp\mysql\data ke tempat lain, misalnya ke Desktop, dan beri nama data_cadangan. Langkah ini wajib. Kalau ada yang salah, Anda masih bisa kembali.
  3. Ganti nama folder C:\xampp\mysql\data menjadi data_old.
  4. Salin folder C:\xampp\mysql\backup, lalu tempel dan beri nama data. Sekarang Anda punya folder data baru yang bersih.
  5. Dari data_old, salin folder database milik Anda ke folder data yang baru. Nama folder sama dengan nama database, misalnya toko atau laravel_app. Jangan salin folder mysql, performance_schema, phpmyadmin, dan test, karena folder itulah yang diganti dengan versi bersih.
  6. Salin juga file ibdata1 dari data_old ke data, dan pilih Replace saat ditanya. File ini menyimpan data tabel InnoDB. Tanpa file ini, tabel InnoDB akan muncul tapi tidak bisa dibuka.
  7. Buka XAMPP Control Panel dan Start MySQL.

Jika MySQL menyala, buka phpMyAdmin dan cek apakah tabel-tabel Anda bisa dibuka. Kalau semuanya normal, folder data_old boleh dihapus beberapa hari kemudian setelah Anda yakin tidak ada data yang hilang. Folder data_cadangan di Desktop tetap simpan sebagai pengaman.

Perhatikan bahwa user dan password MySQL yang pernah Anda buat akan kembali ke bawaan XAMPP (user root tanpa password), karena daftar user tersimpan di folder mysql yang diganti. Buat ulang user tersebut jika aplikasi Anda memakainya.

Iklan

Langkah 4: Atasi error "Aria recovery failed"

XAMPP versi baru memakai MariaDB, dan MariaDB menyimpan tabel sistemnya dengan mesin bernama Aria. Jika log menampilkan Aria recovery failed, biasanya file log Aria yang rusak, bukan datanya.

Dapatkan Update Terbaru

Berlangganan gratis. Artikel & tutorial coding terbaru langsung ke email kamu. Tanpa spam.

  1. Stop MySQL dan pastikan sudah membuat backup folder data seperti di Langkah 3.
  2. Di folder C:\xampp\mysql\data, cari file bernama aria_log_control dan aria_log.00000001 (angkanya bisa berbeda).
  3. Pindahkan file-file tersebut ke folder lain (jangan langsung dihapus).
  4. Start MySQL. MariaDB akan membuat file log Aria yang baru secara otomatis.

Jika MySQL sudah bisa menyala, file yang dipindahkan tadi tidak dibutuhkan lagi. Jika masih gagal, kembalikan file tersebut dan lanjutkan ke Langkah 3.

Langkah 5: Nyalakan paksa dengan innodb_force_recovery

Gunakan langkah ini hanya jika Langkah 3 gagal dan log jelas menunjukkan InnoDB rusak. Tujuannya bukan untuk memakai MySQL seperti biasa, melainkan menyalakannya dalam mode darurat supaya data masih bisa diekspor.

  1. Buka my.ini, lalu di bawah bagian [mysqld] tambahkan baris:
innodb_force_recovery = 1
  1. Start MySQL. Jika masih gagal, naikkan angkanya bertahap ke 2, lalu 3, dan seterusnya. Nilai di atas 4 berisiko merusak data lebih jauh, jadi berhentilah di angka terkecil yang membuat MySQL menyala.
  2. Setelah menyala, segera ekspor database Anda dengan mysqldump atau menu Export di phpMyAdmin. Panduan lengkapnya ada di artikel backup dan restore database MySQL dengan mysqldump.
  3. Hapus baris innodb_force_recovery dari my.ini, pulihkan folder data yang bersih (Langkah 3 tanpa menyalin folder database), lalu impor kembali hasil ekspor tadi.

Langkah 6: Masalah hak akses dan antivirus

Jika log menyebut Access denied atau Can't create/write to file, MySQL tidak punya izin menulis ke foldernya sendiri. Beberapa hal yang bisa dicoba:

Iklan
  • Tutup XAMPP, lalu klik kanan xampp-control.exe dan pilih Run as administrator.
  • Pastikan XAMPP terpasang di C:\xampp, bukan di C:\Program Files. Folder Program Files dilindungi oleh Windows (UAC) dan sering membuat MySQL gagal menulis file.
  • Periksa antivirus atau Windows Defender. Beberapa antivirus mengunci atau mengkarantina file di folder data. Tambahkan folder C:\xampp ke daftar pengecualian.
  • Pastikan disk tidak penuh. MySQL akan mati jika tidak bisa menulis file log atau file sementara.

Cara mencegah error ini terulang

Hampir semua kasus file data rusak berawal dari MySQL yang dimatikan secara paksa. Beberapa kebiasaan kecil berikut mencegahnya:

  • Selalu klik Stop pada MySQL di XAMPP Control Panel sebelum mematikan atau me-restart komputer.
  • Jangan menutup proses mysqld.exe lewat Task Manager kecuali benar-benar terpaksa.
  • Backup rutin database penting dengan mysqldump, misalnya seminggu sekali. Satu file .sql jauh lebih mudah dipulihkan dibanding folder data yang rusak.
  • Untuk laptop, aktifkan pengaturan agar Windows memberi peringatan sebelum baterai benar-benar habis.
  • Jangan menjalankan dua server MySQL di port yang sama. Pilih salah satu, atau pisahkan port seperti di Langkah 2.

Kalau Anda baru belajar MySQL dan ingin memahami dasar-dasarnya, mulai dari panduan belajar MySQL untuk pemula.

FAQ

Apakah menginstal ulang XAMPP akan memperbaiki error ini?

Bisa, tetapi semua database di folder data akan hilang jika Anda tidak menyelamatkannya lebih dulu. Langkah 3 memberikan hasil yang sama dengan menginstal ulang, tanpa kehilangan database.

MySQL sempat hijau lalu mati lagi. Apa artinya?

MySQL berhasil dijalankan, tetapi berhenti saat membaca file data atau saat mencoba memakai port. Jawabannya ada di baris terakhir mysql_error.log.

Iklan

Bolehkah saya menghapus file ib_logfile0 dan ib_logfile1?

Saran ini sering beredar, tetapi berisiko. File tersebut menyimpan perubahan yang belum ditulis ke tabel. Menghapusnya bisa membuat data terbaru hilang atau tabel rusak. Selalu coba Langkah 3 lebih dulu, dan backup folder data sebelum menghapus apa pun.

Apakah error ini juga terjadi di macOS dan Linux?

Bisa, dengan penyebab yang sama: port terpakai, data rusak, atau hak akses. Lokasi foldernya berbeda. Di macOS biasanya /Applications/XAMPP/xamppfiles/var/mysql, dan di Linux /opt/lampp/var/mysql.

Bagaimana jika semua langkah gagal?

Selama folder data_cadangan masih ada, data Anda belum hilang. Instal XAMPP baru di lokasi lain, lalu pindahkan folder database dan ibdata1 dari cadangan seperti pada Langkah 3. Jika versi MariaDB-nya sama, data biasanya bisa dibaca kembali.

Iklan
mysql shutdown unexpectedly error mysql xampp xampp mysql tidak bisa start port 3306 mysql_error.log aria recovery failed
Rekomendasi

Hosting Cepat untuk Website & Laravel

Butuh hosting yang ngebut dan stabil untuk deploy website atau aplikasi Laravel-mu? Ini rekomendasi yang saya pakai.

Lihat Rekomendasi Hosting
Yudhi
Ditulis oleh

Yudhi

Web Developer

Web developer yang sehari-hari berkutat dengan PHP, Laravel, JavaScript, dan MySQL. Terbiasa membangun aplikasi web dari nol โ€” merancang database, menulis fitur, memburu bug, hingga deploy ke server โ€” lalu menuangkan solusi dan tutorialnya di DhieCoderWeb agar lebih mudah diikuti developer lain.

Bagikan artikel
Kembali

Komentar (0)

Punya pertanyaan atau tambahan? Tulis di bawah โ€” tak perlu login.

Membalas komentarโ€ฆ batal

Belum ada komentar. Jadilah yang pertama!

๐Ÿš€ Partner Recommendation

Butuh Source Code & Aplikasi Premium?

Download aplikasi Laravel, POS, Sekolah, Klinik, ERP, dan source code siap pakai di GudangCode.

GudangCode
  • โœ” Source Code Premium
  • โœ” Sistem Siap Pakai
  • โœ” Lifetime Update
  • โœ” Membership Lifetime
  • โœ” Update Aplikasi Harian
Daftar Membership โ†’
Iklan
Iklan