MySQL / MariaDB
MySQL dan MariaDB adalah server basis data relasional. SQL adalah bahasa untuk bertanya dan menulis data, sedangkan MySQL dan MariaDB adalah perangkat lunak yang menjalankan bahasa itu dan menyimpan hasilnya. Website dinamis menempatkan konten, user, pesanan, dan pengaturan di dalam database, terpisah dari file tema di Document Root. PHP menghubungi server lewat empat hal: host, nama database, user, dan password. Backup yang hanya menyalin file tidak akan pernah memulihkan situs yang datanya hidup di tabel.
Tiga istilah yang sering tertukar
| Istilah | Di akun hosting |
|---|---|
| Database | Wadah tempat tabel berada |
| User DB | Akun yang boleh mengakses database, bukan akun cPanel |
| Host | Alamat asal koneksi yang diizinkan, sering localhost |
| Privilege | Hak atas satu database, misalnya SELECT dan INSERT |
Satu kesalahan umum adalah memakai satu user untuk banyak aplikasi. Lebih rapi satu database plus satu user dengan hak seperlunya, karena hak bisa dicabut tanpa menyentuh aplikasi lain.
Lokasi kredensial dan cara memeriksa akses
Di shared hosting, database dan user dibuat lewat panel, lalu hak akses diberikan pada database tertentu. Kredensial yang sudah tersimpan tinggal dibaca di berkas konfigurasi aplikasi, misalnya wp-config.php untuk WordPress. Host biasanya localhost karena koneksi dibuka dari dalam server yang sama. Akses dari laptop hanya mungkin kalau paket Anda mengizinkan remote MySQL dan alamat IP Anda didaftarkan.
Cara membaca daftar proses
Saat halaman melambat, pertanyaan pertama adalah apa yang sedang dikerjakan database. Jalankan SHOW PROCESSLIST untuk melihat setiap koneksi, database yang disentuh, query aktif, dan lamanya dalam detik. Kolom State menjelaskan apa yang ditunggu, misalnya Sending data atau Copying to tmp table. Kalau satu query lama muncul berulang di banyak koneksi, masalahnya ada di query, bukan di PHP. Query berat pada tabel besar umumnya butuh indeks, lihat Index MySQL.
Traffic tanpa cache menyentuh baris yang sama
WordPres tanpa page cache membuat setiap permintaan menjalankan PHP yang membuka koneksi baru dan membaca baris yang sama dari tabel posts dan options. Lonjakan trafik berarti banyak koneksi paralel yang berebut slot di max_connections. Begitu batas itu tersentuh, koneksi baru ditolak dengan pesan too many connections, dan di shared hosting kondisi ini bisa muncul sebagai Error 508. Kurangi koneksi per permintaan dengan page cache atau object cache seperti Redis dan Connection Pooling. Batas koneksi tiap server berbeda dan sering tidak terlihat di panel, jadi tanyakan angka yang berlaku pada provider sebelum menyimpulkan.
Koneksi yang tidak pernah dilepas
Koneksi persisten dan pool yang ukurannya terlalu besar menahan slot bahkan saat database sedang sepi. Satu koneksi idle tetap dihitung ke max_connections sampai wait_timeout menutupnya, dan nilai timeout itu berbeda antar host serta tidak selalu bisa diubah di shared. Jadi lonjakan trafik bisa gagal bukan karena query lambat, melainkan karena slot sudah diisi koneksi lama. Periksa daftar proses saat puncak trafik, dan pastikan koneksi lama benar-benar ditutup.
FAQ
Pilih MySQL atau MariaDB?
Di shared hosting provider yang menentukan. Untuk aplikasi umum keduanya berperilaku mirip, jadi ikuti versi yang didukung host dan uji sebelum migrasi.
Bisa akses MySQL dari laptop?
Hanya jika host mengaktifkan remote MySQL dan membatasi berdasarkan IP. Banyak paket shared hanya menerima koneksi localhost dari dalam server.
Apa arti error too many connections?
Server menolak koneksi baru karena slot di max_connections sudah habis. Biasanya karena lompatan trafik, query lambat yang menahan koneksi, atau pool dan koneksi persisten yang tidak ditutup.
MySQL atau MariaDB menyimpan isi WordPress dan hampir semua CMS. Jangan expose 3306 ke publik. Kelola lewat phpMyAdmin di shared, atau CLI di VPS. Backup dump terpisah dari file.
Disclaimer: Artikel WikiHosting disusun untuk tujuan edukasi dan referensi. Teknologi hosting terus berkembang, sehingga beberapa informasi teknis mungkin berubah seiring waktu.
