Blog · 20 Oct 2026 · 3 min read
Error Establishing a Database Connection: Cara Perbaikinya
Website WordPress kamu tiba-tiba hanya menampilkan tulisan "Error establishing a database connection". Berikut cara mencari penyebabnya lewat cPanel, dari kredensial wp-config.php sampai tabel database yang rusak.
By Tim Gocelerus
Kamu buka website, yang muncul cuma satu baris tulisan: "Error establishing a database connection". Tidak ada menu, tidak ada tema, wp-admin juga ikut mati. Artikel ini membahas urutan pemeriksaan yang masuk akal lewat cPanel, dari penyebab paling sering sampai yang jarang.
Apa sebenarnya arti error ini
WordPress menyimpan semua isi website — post, halaman, setting, user — di database MySQL/MariaDB. File PHP di public_html hanya kerangkanya. Saat halaman dibuka, WordPress membaca kredensial database dari wp-config.php, lalu mencoba connect.
Kalau koneksi itu gagal, WordPress tidak bisa menampilkan apa pun dan hanya mencetak pesan tadi. Jadi masalahnya selalu salah satu dari ini:
- Kredensial di
wp-config.phpsalah atau tidak cocok lagi - User database tidak punya akses ke database tersebut
- Database server-nya memang sedang tidak bisa diakses dari akun kamu
- Tabel database rusak atau database-nya kosong/hilang
- Disk akun penuh sehingga MySQL tidak bisa menulis
Langkah 0: perhatikan pesan persisnya
Sebelum mengubah apa pun, baca teksnya baik-baik. Ada dua varian yang artinya berbeda:
- "Error establishing a database connection" saja → koneksi gagal. Lanjut ke langkah 1.
- "One or more database tables are unavailable. The database may need to be repaired." → koneksi berhasil, tapi tabelnya bermasalah. Langsung lompat ke bagian Perbaiki tabel yang rusak.
Coba juga buka https://domainkamu.com/wp-admin/. Kadang halaman admin memberi pesan yang sedikit lebih detail.
Langkah 1: cek kredensial di wp-config.php
- Masuk cPanel → File Manager → buka folder
public_html(atau folder tempat WordPress kamu terpasang). - Cari file
wp-config.php, klik kanan → Edit. - Lihat empat baris ini:
define( 'DB_NAME', 'namaakun_wp' );
define( 'DB_USER', 'namaakun_wpuser' );
define( 'DB_PASSWORD', 'password-panjang-di-sini' );
define( 'DB_HOST', 'localhost' );
Catat DB_NAME dan DB_USER di notepad. Di cPanel, nama database dan user hampir selalu diawali prefix nama akun cPanel kamu, misalnya tokobaju_wp. Kalau di file kamu tertulis wordpress atau wp_db tanpa prefix, besar kemungkinan file ini hasil copy dari server lain dan belum disesuaikan.
Jangan lupa: sebelum mengedit, klik kanan file → Copy dulu, simpan sebagai
wp-config-backup.phpdi luarpublic_htmlkalau bisa. Minimal kamu punya versi aslinya.
Langkah 2: cocokkan dengan MySQL Databases
- Di cPanel, buka MySQL Databases.
- Di bagian Current Databases, cek apakah nama database persis sama dengan
DB_NAMEtadi — termasuk huruf besar-kecil. - Di kolom Privileged Users untuk database itu, cek apakah
DB_USERkamu ada di sana.
Tiga kemungkinan:
- Database tidak ada sama sekali. Ini biasanya terjadi setelah migrasi yang belum tuntas, atau database terhapus. Kamu perlu restore dari backup.
- Database ada, tapi user tidak terdaftar sebagai privileged user. Scroll ke Add User To Database, pilih user dan database, klik Add, lalu centang ALL PRIVILEGES dan Make Changes.
- Semuanya cocok. Berarti kemungkinan besar passwordnya yang salah. Lanjut langkah 3.
Langkah 3: reset password user database
Password lama tidak bisa dilihat, hanya bisa diganti. Jadi cara tercepat adalah menyamakan dua sisi:
- Di MySQL Databases, bagian Current Users, klik Change Password di samping user yang dipakai WordPress.
- Buat password baru yang panjang (pakai Password Generator), salin dulu ke notepad.
- Kembali ke File Manager, edit
wp-config.php, tempel password baru keDB_PASSWORD, simpan. - Buka website lagi.
Hati-hati saat menempel: jangan sampai ikut terbawa spasi di awal/akhir, dan pastikan tanda kutip tunggalnya masih utuh. Kalau password mengandung tanda \ atau ', lebih aman buat ulang password tanpa karakter itu.
Langkah 4: tes koneksi terpisah dari WordPress
Kalau masih error, uji koneksinya langsung supaya tahu masalahnya di WordPress atau di database. Buat file baru bernama dbtest.php di public_html:
<?php
$link = @mysqli_connect('localhost', 'namaakun_wpuser', 'password-baru', 'namaakun_wp');
if (!$link) {
echo 'GAGAL: ' . mysqli_connect_error();
} else {
echo 'KONEKSI OK';
}
Ganti nilai-nilainya sesuai wp-config.php, lalu buka https://domainkamu.com/dbtest.php.
- "KONEKSI OK" → kredensial benar. Masalahnya ada di sisi WordPress:
wp-config.phpmungkin ter-override oleh file lain, atau ada plugin/mu-plugin yang mengubah konstanta database. Cek juga apakah adawp-config.phpkedua di folder di atasnya. - "GAGAL: Access denied for user..." → username atau password masih salah. Ulangi langkah 3 pelan-pelan.
- "GAGAL: Unknown database..." → nama database salah atau database-nya tidak ada.
- "GAGAL: Can't connect to local MySQL server..." → masalahnya di sisi server, bukan di file kamu. Hubungi support hosting dengan menyertakan pesan ini.
Hapus dbtest.php setelah selesai. File itu berisi password database dalam bentuk teks biasa.
Langkah 5: cek DB_HOST
Di sebagian besar hosting cPanel, DB_HOST adalah localhost karena web server dan database ada di mesin yang sama. Tapi tidak semua: ada host yang memakai 127.0.0.1 atau hostname khusus. Nilai ini berbeda antar penyedia, jadi jangan menebak — cek dokumentasi hosting kamu atau tanya support. Kalau website sebelumnya jalan normal dengan localhost, biarkan saja.
Perbaiki tabel yang rusak
Kalau pesannya menyebut tables are unavailable, atau tes koneksi tadi "OK" tapi website tetap error:
- Edit
wp-config.php, tambahkan baris ini tepat di atas komentar/* That's all, stop editing! */:
define( 'WP_ALLOW_REPAIR', true );
- Buka
https://domainkamu.com/wp-admin/maint/repair.php. - Pilih Repair Database (atau Repair and Optimize Database kalau kamu tidak terburu-buru).
- Hapus lagi baris
WP_ALLOW_REPAIRsetelah selesai. Selama baris itu ada, halaman repair bisa diakses siapa pun tanpa login.
Alternatifnya lewat cPanel → phpMyAdmin → pilih database → centang semua tabel → pilih Repair table dari dropdown di bawah. Opsi ini tersedia untuk tabel MyISAM; untuk InnoDB hasilnya bisa berbeda, dan kalau tabel InnoDB benar-benar rusak, restore dari backup biasanya lebih cepat daripada menambalnya.
Kalau error-nya hilang-timbul
Error yang muncul hanya saat trafik ramai, lalu normal lagi, biasanya bukan soal kredensial. Yang perlu dicek:
- cPanel → Resource Usage (atau menu serupa, namanya berbeda antar host). Lihat apakah ada fault pada batas jumlah proses, memory, atau entry process dalam beberapa hari terakhir.
- cPanel → Disk Usage atau indikator kuota di sidebar. Kalau disk akun penuh, MySQL tidak bisa menulis file sementara dan koneksi bisa gagal. Bersihkan backup lama, file di folder
tmp, atau log yang membengkak. - Plugin yang membuat query berat — misalnya related posts, statistik pengunjung, atau search yang kompleks — sering jadi pemicu. Nonaktifkan satu per satu dan amati.
Kalau polanya jelas ke arah keterbatasan resource, langkah berikutnya adalah mengurangi beban query atau pindah ke paket yang lebih besar, bukan mengutak-atik wp-config.php lagi.
Setelah website pulih
Satu hal yang hampir selalu disesali orang saat error ini terjadi: tidak ada backup yang bisa dipakai. Database adalah bagian yang paling sulit dibuat ulang — file tema dan plugin bisa diunduh lagi, isi website tidak.
Sebelum menutup tab, pastikan kamu tahu: backup terakhir database kamu kapan, dan di mana filenya. Di cPanel kamu bisa mengunduh manual lewat Backup → Download a MySQL Database Backup sebagai jaring pengaman tambahan.
Di Gocelerus, backup harian sudah termasuk dalam paket hosting cPanel kami, dengan server di Singapura. Detail paketnya bisa kamu lihat di halaman pricing. Kalau website kamu sekarang ada di tempat lain dan kamu ingin memindahkannya, migrasinya gratis dan dikerjakan tim kami.