Pernahkah Anda mengalami error “TCP connect to (IP:3306) failed” saat mencoba mengakses database MySQL XAMPP dari komputer lain? Jangan khawatir! Masalah ini sangat umum terjadi dan memiliki solusi yang mudah dipahami.
Dalam artikel ini, kita akan membahas cara mengatasi masalah koneksi remote MySQL XAMPP secara step-by-step, berdasarkan pengalaman troubleshooting nyata yang berhasil diselesaikan.
Apa itu Remote Connection MySQL?
Remote connection MySQL adalah kemampuan untuk mengakses database MySQL dari komputer yang berbeda melalui jaringan. Ini sangat berguna untuk:
- Tim development yang bekerja dengan database terpusat
- Menggunakan tools seperti Navicat, phpMyAdmin dari komputer lain
- Aplikasi web yang perlu akses database dari server berbeda
Gejala Masalah yang Sering Terjadi
Ketika mencoba koneksi remote ke MySQL XAMPP, Anda mungkin menemui error seperti:
TCP connect to (192.168.x.x : 3306) failed
TcpTestSucceeded: False
- Connection timeout di Navicat atau tools database lainnya
PingSucceeded: True
tapiTcpTestSucceeded: False
Penyebab Utama Masalah
Berdasarkan troubleshooting yang telah dilakukan, ada 3 penyebab utama mengapa remote connection MySQL XAMPP gagal:
1. Konfigurasi MySQL yang Salah
bind-address
masih default ke localhostskip-networking
masih aktif- Port tidak dikonfigurasi dengan benar
2. Windows Firewall Memblokir Port 3306
- Firewall Windows aktif di semua profile
- Port 3306 tidak dibuka untuk koneksi eksternal
- Rules firewall tidak dikonfigurasi
3. User MySQL Tidak Memiliki Akses Remote
- User root hanya bisa akses dari localhost
- Belum ada user dengan permission untuk remote access
Solusi Lengkap Step by Step
Langkah 1: Konfigurasi File my.ini MySQL
Lokasi file: D:/XAMPP/mysql/bin/my.ini
(sesuaikan dengan instalasi Anda)
- Buka file my.ini dengan text editor (Notepad++, VS Code, atau Notepad biasa)
- Cari bagian
[mysqld]
dan pastikan konfigurasi berikut:
[mysqld]
port=3306
# Ubah bind-address ke 0.0.0.0 untuk allow remote connections
bind-address = 0.0.0.0
# Pastikan skip-networking di-disable (bisa dikosongkan atau set ke 0)
skip-networking=0
# Konfigurasi lainnya...
socket="D:/XAMPP/mysql/mysql.sock"
basedir="D:/XAMPP/mysql"
datadir="D:/XAMPP/mysql/data"
- Save file dan tutup editor
Langkah 2: Restart MySQL Service
- Buka XAMPP Control Panel
- Stop service MySQL (tunggu sampai benar-benar stop)
- Start lagi service MySQL
- Pastikan ada tanda X merah yang menunjukkan service running
Langkah 3: Konfigurasi Windows Firewall
Ini adalah langkah paling penting yang sering terlewat!
Buka Command Prompt sebagai Administrator, lalu jalankan:
# Tambah rule untuk inbound connection
netsh advfirewall firewall add rule name="MySQL XAMPP Inbound" dir=in action=allow protocol=TCP localport=3306 profile=any
# Tambah rule untuk outbound connection
netsh advfirewall firewall add rule name="MySQL XAMPP Outbound" dir=out action=allow protocol=TCP localport=3306 profile=any
Alternatif via GUI:
- Buka Windows Defender Firewall with Advanced Security
- Klik Inbound Rules → New Rule
- Pilih Port → TCP → Specific Local Ports: 3306
- Allow the connection
- Centang semua profiles (Domain, Private, Public)
- Name: “MySQL XAMPP”
Langkah 4: Test Koneksi dari Client
Di komputer client, buka PowerShell dan jalankan:
Test-NetConnection -ComputerName [IP_SERVER] -Port 3306
Contoh:
Test-NetConnection -ComputerName 192.168.0.7 -Port 3306
Hasil yang diharapkan:
TcpTestSucceeded : True
Langkah 5: Konfigurasi User MySQL untuk Remote Access
- Buka phpMyAdmin di browser:
http://[IP_SERVER]/phpmyadmin
- Jalankan SQL query berikut di tab SQL:
-- Lihat user yang ada
SELECT user, host FROM mysql.user;
-- Buat user root untuk remote access
CREATE USER 'root'@'%' IDENTIFIED BY '';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
- Restart MySQL sekali lagi setelah perubahan user
Langkah 6: Test dengan Client Database
Setting koneksi di Navicat/HeidiSQL/MySQL Workbench:
- Host: IP Address server (contoh: 192.168.0.7)
- Port: 3306
- Username: root
- Password: (kosong atau sesuai konfigurasi)
Troubleshooting Tambahan
Jika Masih Gagal, Cek Hal Berikut:
1. Cek apakah MySQL benar-benar listening
netstat -an | findstr :3306
Harusnya muncul:
TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING
2. Cek status firewall
netsh advfirewall show allprofiles state
3. Temporary disable antivirus untuk test
4. Gunakan port alternatif jika 3306 conflict:
[mysqld]
port=3307
Tips Keamanan Penting
Setelah remote connection berhasil, jangan lupa implementasi keamanan:
1. Ganti Password Default
ALTER USER 'root'@'%' IDENTIFIED BY 'password_kuat_anda';
FLUSH PRIVILEGES;
2. Batasi IP yang Boleh Akses
-- Hanya allow IP tertentu
CREATE USER 'root'@'192.168.1.100' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.100';
3. Buat User Khusus untuk Remote
CREATE USER 'remote_user'@'%' IDENTIFIED BY 'secure_password';
GRANT SELECT, INSERT, UPDATE, DELETE ON database_name.* TO 'remote_user'@'%';
Kesimpulan
Masalah remote connection MySQL XAMPP biasanya disebabkan oleh:
- Konfigurasi MySQL yang salah (bind-address dan skip-networking)
- Windows Firewall yang memblokir port 3306
- User permission yang tidak tepat
Dengan mengikuti langkah-langkah di artikel ini secara berurutan, Anda seharusnya bisa mengatasi masalah remote connection MySQL XAMPP dengan mudah.
Yang paling penting adalah: jangan skip langkah konfigurasi firewall, karena ini adalah penyebab #1 yang paling sering terjadi!
FAQ (Frequently Asked Questions)
Q: Apakah aman membuka port 3306 untuk remote access? A: Untuk development di jaringan lokal, relatif aman. Untuk production, gunakan VPN atau SSH tunneling.
Q: Bagaimana jika menggunakan XAMPP portable? A: Prosedurnya sama, hanya path file my.ini yang berbeda sesuai lokasi folder XAMPP portable.
Q: Bisa pakai port selain 3306? A: Bisa! Ubah di my.ini dan sesuaikan firewall rule dengan port yang baru.
Q: Kenapa PingSucceeded True tapi TcpTestSucceeded False? A: Ping menggunakan ICMP protocol, sedangkan MySQL menggunakan TCP. Ini menunjukkan komputer bisa dijangkau tapi port 3306 tertutup (firewall/konfigurasi MySQL).