Pesan ini sama saja entah kata sandinya salah, servernya mati, cakramnya penuh, atau batas sambungannya tercapai. Menebak di antara empat kemungkinan lebih lambat daripada menguji, dan ujinya hanya satu perintah.

Uji kredensialnya, bukan situsnya

mysql -u dbuser -p -h localhost dbname
  • Access denied for user — pengguna atau kata sandi salah, atau penggunanya tidak punya hak pada basis data itu.
  • Can't connect to local MySQL server — layanannya tidak berjalan.
  • Unknown database — namanya salah, atau basis datanya memang tidak pernah dibuat di server ini.
  • Too many connections — batasnya tercapai.

Akses ditolak

Bacalah kredensial yang benar-benar dipakai situs itu — bukan yang Anda ingat.

grep -E "DB_NAME|DB_USER|DB_PASSWORD|DB_HOST" wp-config.php

Kata sandi yang mengandung tanda kutip atau garis miring terbalik adalah sebab yang lazim: benar di panel dan salah di berkas, karena pelolosan karakternya hilang.

Layanannya tidak berjalan

systemctl status mariadb
systemctl start mariadb
journalctl -u mariadb --since "30 min ago" | tail -30

Kalau ia menyala lalu mati lagi, lognya menyebut sebabnya. Cakram penuh dan tabel yang rusak adalah dua sebab yang biasa.

Terlalu banyak sambungan

SHOW STATUS LIKE 'Threads_connected';
SHOW VARIABLES LIKE 'max_connections';
Menaikkan max_connections padahal masalah sebenarnya adalah kueri yang lambat hanya membeli beberapa menit. Setiap sambungan memakan memori, dan server yang kehabisan memori lebih buruk daripada server yang menolak sebuah sambungan.

Setelah pemindahan

Basis data yang dipindahkan ke server lain biasanya menuntut DB_HOST diubah dari localhost menjadi sebuah alamat, dan pengguna yang diberi hak dari alamat itu, bukan dari localhost.

Di hosting EGPHP kredensialnya ada di EGPNL, di bawah Basis Data, dan panelnya menampilkan inang mana yang harus dipakai situs itu. Salinlah dari sana, jangan mengetik.