Lewati ke isi

Server & Infrastruktur

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.

Terbit 5 menit baca

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
  1. Apa saja penyebab paling umum?
  2. 1. Periksa isi wp-config.php
  3. 2. Pastikan user punya hak ke database
  4. 3. Cek apakah layanan database berjalan
  5. Kenapa MySQL bisa mati sendiri?
  6. 4. Pastikan disk tidak penuh
  7. 5. Perbaiki tabel yang rusak
  8. Bagaimana mencegah error ini terulang?
  9. Pertanyaan yang sering diajukan

"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?

PenyebabTanda khasPemeriksaan pertama
Kredensial di wp-config.php salahError muncul setelah pindah hosting atau ganti password databaseCocokkan DB_NAME, DB_USER, DB_PASSWORD, DB_HOST
User tidak punya hak ke databaseLogin ke database gagal walau password benarCek hak akses user di panel atau MySQL
MySQL/MariaDB matiError tiba-tiba, sering saat trafik ramaisystemctl status mariadb dan log OOM
Disk penuhError muncul bersama masalah lain, misalnya upload gagaldf -h
Tabel database rusakHalaman depan error, admin kadang memberi pesan lainMode repair WordPress
Terlalu banyak koneksiError hilang timbul saat ramaiLog 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, misalnya db.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.

Sumber & referensi

Baca juga