TLDR #
MariaDB adalah database relasional open source yang kompatibel dengan MySQL. Di Ubuntu Server, kamu bisa memasangnya lewat apt, mengamankannya dengan mysql_secure_installation, lalu mulai membuat user dan database. Artikel ini memandu dari nol sampai siap produksi, termasuk backup dan restore.
Pendahuluan #
MariaDB adalah fork dari MySQL yang dikembangkan komunitas setelah akuisisi MySQL oleh Oracle. Ia mempertahankan kompatibilitas penuh dengan MySQL — sintaks, protokol, bahkan driver yang sama — sehingga hampir semua aplikasi yang tadinya memakai MySQL bisa pindah ke MariaDB tanpa banyak perubahan.
Kelebihan utama MariaDB:
- Open source dengan lisensi GPL yang jelas.
- Kompatibel dengan MySQL (drop-in replacement).
- Ringan — cocok untuk VPS kecil sekalipun.
- Aktif dikembangkan dengan fitur tambahan di atas MySQL.
Prasyarat #
Siapkan:
- Server Ubuntu (20.04 ke atas) dengan akses SSH.
- User dengan hak
sudo. - Port
3306(default MariaDB) tidak diblokir firewall, kecuali hanya diakses lokal.
Update paket sebelum mulai:
sudo apt update
sudo apt upgrade -yInstalasi MariaDB #
Pasang paket mariadb-server:
sudo apt install -y mariadb-serverSetelah selesai, periksa status layanan:
sudo systemctl status mariadbJika belum aktif, jalankan:
sudo systemctl enable mariadb
sudo systemctl start mariadbVerifikasi versi:
mariadb --versionPengamanan Awal (mysql_secure_installation) #
MariaDB menyediakan skrip pengamanan bawaan. Jalankan:
sudo mysql_secure_installationIkuti interaksinya:
- Enter current password for root — tekan Enter (default kosong).
- Switch to unix_socket authentication? — pilih
Yagar root hanya bisa login dari user sistem yang sama. - Remove anonymous users? —
Y. - Disallow root login remotely? —
Y. - Remove test database? —
Y. - Reload privilege tables? —
Y.
Dengan pengaturan ini, akses root hanya lewat sudo mariadb dari server, bukan lewat password.
Membuat Database dan User #
Login sebagai root:
sudo mariadbBuat database:
CREATE DATABASE namaku_database CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;Buat user dan beri hak akses:
CREATE USER 'namaku_user'@'localhost' IDENTIFIED BY 'password_kuat';
GRANT ALL PRIVILEGES ON namaku_database.* TO 'namaku_user'@'localhost';
FLUSH PRIVILEGES;Ganti namaku_database, namaku_user, dan password_kuat dengan nilai milikmu. Selalu pakai password yang kuat.
Mengaktifkan Akses dari Jarak Jauh (Opsional) #
Secara default, MariaDB hanya mendengarkan 127.0.0.1 (localhost). Jika aplikasi di server lain perlu mengaksesnya, ubah bind-address.
Buka file konfigurasi:
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnfCari baris:
bind-address = 127.0.0.1Ubah menjadi:
bind-address = 0.0.0.0Restart layanan:
sudo systemctl restart mariadbKemudian buat user yang boleh login dari alamat tertentu (bukan localhost):
CREATE USER 'namaku_user'@'192.168.1.10' IDENTIFIED BY 'password_kuat';
GRANT ALL PRIVILEGES ON namaku_database.* TO 'namaku_user'@'192.168.1.10';
FLUSH PRIVILEGES;Peringatan: Membuka port
3306ke internet tanpa proteksi (firewall/SSH tunnel) sangat berisiko. Untuk produksi, batasi ke IP tertentu atau gunakan SSH tunnel seperti pada artikel 9Router.
Firewall (UFW) #
Jika server memakai UFW, izinkan port MariaDB hanya untuk jaringan lokal:
sudo ufw allow from 192.168.1.0/24 to any port 3306
sudo ufw reloadJangan pernah ufw allow 3306 tanpa batasan asal, kecuali memang disengaja.
Backup dan Restore #
Backup #
Gunakan mariadb-dump (atau mysqldump) untuk mencadangkan database:
mariadb-dump -u namaku_user -p namaku_database > backup.sqlUntuk semua database:
mariadb-dump -u root -p --all-databases > backup_all.sqlRestore #
mariadb -u namaku_user -p namaku_database < backup.sqlBackup otomatis dengan cron #
Tambahkan ke crontab (crontab -e):
0 2 * * * mariadb-dump -u root namaku_database | gzip > /backup/db-$(date +\%F).sql.gzBaris di atas membuat backup terkompres setiap pukul 02:00.
Perintah Umum #
| Perintah | Fungsi |
|---|---|
sudo mariadb |
Login root via socket |
mariadb -u user -p |
Login sebagai user |
SHOW DATABASES; |
Lihat semua database |
USE namaku_database; |
Pilih database |
SHOW TABLES; |
Lihat tabel |
EXIT; |
Keluar |
Troubleshooting #
Access denied for user 'root'@'localhost'
#
Root memakai unix_socket. Gunakan sudo mariadb untuk login root, atau buat user admin baru dengan password.
Can't connect to MySQL server on ... (111)
#
Layanan tidak aktif atau bind-address masih 127.0.0.1. Periksa:
sudo systemctl status mariadb
sudo ss -ltnp | grep 3306Port 3306 sudah dipakai #
Kemungkinan MySQL lain masih terpasang. Hentikan dan nonaktifkan:
sudo systemctl stop mysql
sudo systemctl disable mysqlKeamanan #
- Jangan buka port
3306ke publik tanpa firewall yang ketat. - Selalu gunakan password kuat untuk user database.
- Batasi hak akses user sesuai kebutuhan (prinsip least privilege).
- Lakukan backup berkala dan simpan di lokasi terpisah.
- Perbarui MariaDB secara rutin dengan
sudo apt upgrade.
Ringkasan Perintah #
Instalasi dan pengamanan:
sudo apt install -y mariadb-server
sudo mysql_secure_installationLogin root:
sudo mariadbBackup dan restore:
mariadb-dump -u user -p database > backup.sql
mariadb -u user -p database < backup.sqlDokumentasi resmi: mariadb.org