Error Establishing a Database Connection dan Solusinya
Penyebab Error establishing a database connection di WordPress, dari salah isi wp-config.php, MySQL mati, sampai disk penuh, plus cara memperbaikinya.
Jawaban singkat
Pesan ini berarti WordPress gagal tersambung ke database. Penyebab paling umum adalah salah nama database, user, password, atau host di wp-config.php, layanan MySQL/MariaDB yang mati (sering karena RAM habis), disk penuh, atau tabel yang rusak.
Daftar isi
"Error establishing a database connection" muncul ketika WordPress tidak bisa tersambung ke database MySQL atau MariaDB. Tanpa database, WordPress tidak punya isi untuk ditampilkan, jadi seluruh situs berhenti, termasuk halaman admin.
Kenapa ini penting dibereskan cepat? Selama pesan ini tampil, pengunjung tidak bisa membuka satu halaman pun, pesanan berhenti masuk, dan mesin pencari yang kebetulan merayapi situs hanya melihat halaman error. Kabar baiknya, penyebabnya hampir selalu satu dari beberapa hal yang bisa dicek berurutan.
Apa saja penyebab paling umum?
| Penyebab | Tanda khas | Pemeriksaan pertama |
|---|---|---|
| Kredensial di wp-config.php salah | Error muncul setelah pindah hosting atau ganti password database | Cocokkan DB_NAME, DB_USER, DB_PASSWORD, DB_HOST |
| User tidak punya hak ke database | Login ke database gagal walau password benar | Cek hak akses user di panel atau MySQL |
| MySQL/MariaDB mati | Error tiba-tiba, sering saat trafik ramai | systemctl status mariadb dan log OOM |
| Disk penuh | Error muncul bersama masalah lain, misalnya upload gagal | df -h |
| Tabel database rusak | Halaman depan error, admin kadang memberi pesan lain | Mode repair WordPress |
| Terlalu banyak koneksi | Error hilang timbul saat ramai | Log MySQL berisi "Too many connections" |
1. Periksa isi wp-config.php
Buka file wp-config.php di folder utama WordPress dan perhatikan empat baris ini:
define( 'DB_NAME', 'nama_database' );
define( 'DB_USER', 'user_database' );
define( 'DB_PASSWORD', 'password_database' );
define( 'DB_HOST', 'localhost' );
Kesalahan yang sering terjadi:
- Di hosting cPanel, nama database dan user biasanya diawali nama akun cPanel, misalnya
akunmu_wp. Setelah pindah hosting dengan nama akun berbeda, awalan ini ikut berubah. - Password berisi karakter khusus yang tidak sengaja terpotong saat disalin.
- DB_HOST tidak selalu
localhost. Bila database ada di server terpisah atau layanan database terkelola, isi dengan alamat host dan port yang diberikan penyedia, misalnyadb.contoh.com:3306.
Cara cepat menguji kredensial dari terminal server:
mysql -u user_database -p -h localhost nama_database
Kalau login di sini gagal, masalahnya ada di kredensial atau hak akses, bukan di WordPress. Kalau login berhasil, coba jalankan SHOW TABLES; untuk memastikan database itu memang berisi tabel WordPress (biasanya berawalan wp_ atau awalan lain sesuai $table_prefix di wp-config.php). Database kosong berarti proses impor saat pindah hosting belum selesai atau salah database.
Di shared hosting tanpa akses terminal, kamu bisa menguji hal yang sama lewat phpMyAdmin: login memakai user dan password dari wp-config.php, lalu lihat apakah tabel-tabelnya muncul.
2. Pastikan user punya hak ke database
User yang benar tapi belum diberi hak tetap ditolak. Di cPanel, buka MySQL Databases, lalu di bagian Add User To Database pilih user dan database, beri hak ALL PRIVILEGES. Langkah lengkapnya ada di cara membuat database MySQL dan user di cPanel.
3. Cek apakah layanan database berjalan
Di VPS, periksa status layanan:
sudo systemctl status mariadb
Ganti mariadb dengan mysql bila server memakai MySQL. Kalau statusnya mati, nyalakan dengan sudo systemctl start mariadb, lalu cari tahu kenapa layanan berhenti. Jangan berhenti di menyalakan ulang saja, karena masalah yang sama akan kembali.
Kenapa MySQL bisa mati sendiri?
Penyebab paling sering di VPS kecil adalah RAM habis. Saat memori penuh, kernel Linux mematikan proses yang paling banyak memakai memori, dan proses database sering menjadi korbannya. Cek dengan:
sudo dmesg -T | grep -i -E "out of memory|killed process"
sudo journalctl -u mariadb --since "1 hour ago"
Panduan membaca log layanan lebih rinci ada di cara membaca log aplikasi dengan journalctl. Solusinya bisa berupa menambah swap sebagai pengaman, mengurangi jumlah proses PHP yang berjalan bersamaan, memasang cache halaman, atau menaikkan RAM server.
4. Pastikan disk tidak penuh
Database butuh ruang untuk menulis data dan file sementara. Jalankan df -h dan perhatikan partisi tempat data MySQL berada (biasanya /). Kalau penggunaan mendekati 100%, hapus file yang tidak perlu seperti backup lama, log besar, atau cache, lalu nyalakan ulang layanan database.
5. Perbaiki tabel yang rusak
Kalau koneksi berhasil tapi ada tabel yang rusak, WordPress punya alat perbaikan bawaan. Tambahkan baris ini di wp-config.php, di atas baris "That's all, stop editing":
define( 'WP_ALLOW_REPAIR', true );
Lalu buka domainmu.com/wp-admin/maint/repair.php dan pilih Repair Database. Halaman ini bisa dibuka siapa pun tanpa login selama baris tadi aktif.
Kalau belum punya backup rutin, lihat cara backup database MySQL dan PostgreSQL otomatis.
Bagaimana mencegah error ini terulang?
- Pantau RAM dan disk server, misalnya dengan peringatan saat penggunaan melewati batas tertentu.
- Pasang cache halaman agar tidak setiap kunjungan membuka koneksi database.
- Batasi jumlah proses PHP sesuai kapasitas RAM.
- Catat kredensial database di pengelola password saat pindah hosting.
- Untuk situs yang sudah ramai, pertimbangkan memisahkan database ke server sendiri agar lonjakan trafik web tidak ikut menghabiskan memori database.
Kalau error tetap muncul padahal database berjalan dan kredensial benar, periksa log error PHP. Langkahnya mirip dengan melacak error lain, seperti dijelaskan di penyebab error 500 di website PHP.
Pertanyaan yang sering diajukan
Apakah data website hilang saat muncul error ini?
Biasanya tidak. Error ini berarti WordPress tidak bisa tersambung, bukan berarti data terhapus. Begitu koneksi pulih, isi situs kembali seperti semula.
Kenapa halaman admin juga tidak bisa dibuka?
Dasbor admin juga mengambil data dari database, termasuk data user untuk login. Selama koneksi gagal, seluruh WordPress tidak bisa berjalan.
Error hanya muncul sesekali saat ramai, apa artinya?
Kemungkinan besar database kehabisan koneksi atau memori saat beban puncak. Cek log MySQL untuk pesan "Too many connections" dan log kernel untuk proses yang dimatikan karena RAM habis.


