📘 Install MySQL / MariaDB di Linux

MySQL dan MariaDB adalah RDBMS (Relational Database Management System) populer yang sering digunakan pada aplikasi web.

  • MySQL: Dikembangkan oleh Oracle.
  • MariaDB: Fork dari MySQL, dikembangkan oleh komunitas (lebih open-source friendly).

Keduanya memiliki kompatibilitas tinggi, sehingga hampir semua aplikasi yang mendukung MySQL juga bisa berjalan di MariaDB.


2. Instalasi MySQL / MariaDB

🔹 Install MySQL (Debian/Ubuntu)

sudo apt update
sudo apt install mysql-server -y

🔹 Install MariaDB (Debian/Ubuntu)

sudo apt update
sudo apt install mariadb-server mariadb-client -y

🔹 Install MySQL/MariaDB (RHEL/CentOS/Rocky)

# MySQL
sudo dnf install @mysql -y

# MariaDB
sudo dnf install mariadb-server mariadb -y

🔹 Start & Enable Service

sudo systemctl enable --now mysql
# atau
sudo systemctl enable --now mariadb

🔹 Konfigurasi Awal (Hardening)

sudo mysql_secure_installation

Langkah ini akan:

  • Set password root database.
  • Hapus user anonymous.
  • Nonaktifkan login root via remote.
  • Hapus test database.
  • Reload privilege tables.

3. Best Practice Operasional Database

✅ Gunakan user khusus (bukan root) untuk aplikasi.
✅ Gunakan systemctl untuk mengontrol service.
✅ Buat backup rutin dengan mysqldump atau xtrabackup.
✅ Gunakan monitoring (misalnya dengan mysqltuner).
✅ Simpan data di storage yang redundant (RAID/ZFS/LVM snapshot).
✅ Gunakan versi LTS dari MySQL/MariaDB.


4. Instalasi & Konfigurasi phpMyAdmin

🔹 Install phpMyAdmin (Ubuntu/Debian)

sudo apt install phpmyadmin php-mbstring php-zip php-gd php-json php-curl -y

🔹 Konfigurasi Apache (contoh)

Tambahkan symlink:

sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin

🔹 Konfigurasi Nginx (contoh)

server {
    listen 80;
    server_name yourdomain.com;

    root /var/www/html;

    index index.php index.html;

    location /phpmyadmin {
        root /usr/share/;
        index index.php;
        location ~ ^/phpmyadmin/(.+\.php)$ {
            fastcgi_pass unix:/run/php/php8.2-fpm.sock;
            fastcgi_index index.php;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $request_filename;
        }
    }
}

5. Best Security Recommendation

🔹 MySQL / MariaDB

  • Ganti port default (3306) → my.cnf:
    [mysqld]
    port = 3307
  • Gunakan bind-address ke localhost atau private IP:
    bind-address = 127.0.0.1
  • Aktifkan SSL/TLS untuk koneksi client.
  • Gunakan AppArmor/SELinux untuk isolasi proses database.
  • Batasi akses user dengan GRANT hanya pada database yang dibutuhkan:
    CREATE USER 'appuser'@'192.168.%' IDENTIFIED BY 'passwordku';
    GRANT SELECT, INSERT, UPDATE, DELETE ON appdb.* TO 'appuser'@'192.168.%';
    FLUSH PRIVILEGES;

🔹 phpMyAdmin

  • Lindungi dengan .htpasswd (jika Apache).
  • Gunakan Fail2Ban atau firewall untuk memblok brute force.
  • Aktifkan 2FA (Two-Factor Authentication) jika memungkinkan.
  • Jangan expose /phpmyadmin langsung → ganti dengan alias unik:
    location /dbpanel {
      alias /usr/share/phpmyadmin;
    }

6. Kesimpulan

  • Gunakan MySQL/MariaDB sesuai kebutuhan (MariaDB lebih open-source, MySQL lebih enterprise).
  • phpMyAdmin mempermudah administrasi, tapi harus diamankan.
  • Terapkan best practice & rekomendasi keamanan agar database tidak mudah diserang.