Cara Mudah Setup MariaDB 10 di Podman
Menjalankan MariaDB lewat container itu jauh lebih praktis dibanding install langsung di sistem: tidak ada konflik versi, gampang dihapus kalau sudah tidak dipakai, dan datanya tetap aman selama disimpan di volume. Artikel ini membahas cara menjalankan MariaDB 10 pakai Podman, termasuk cara konek ke database-nya dan isu izin volume yang sering muncul di rootless Podman.
Prasyarat
- Podman sudah terinstall di sistem kamu.
- (Opsional) Client
mysql/mariadbdi host, kalau mau konek dari luar container. - (Opsional) File dump
.sqlatau.sql.gz, kalau kamu berencana migrasi/restore data di Langkah 6.
Langkah 1: Pull dan Jalankan Container
podman run -d \
--name mariadb10 \
-e MARIADB_ROOT_PASSWORD=yourpassword \
-e MARIADB_DATABASE=mydb \
-e MARIADB_USER=myuser \
-e MARIADB_PASSWORD=myuserpassword \
-p 127.0.0.1:3306:3306 \
-v mariadb10_data:/var/lib/mysql \
docker.io/library/mariadb:10
Penjelasan tiap opsinya:
MARIADB_ROOT_PASSWORD— password untuk userroot(wajib diisi).MARIADB_DATABASE— nama database yang otomatis dibuat saat container pertama kali jalan.MARIADB_USER/MARIADB_PASSWORD— membuat user non-root yang otomatis punya akses ke database di atas.-v mariadb10_data:/var/lib/mysql— named volume, supaya data tetap aman meskipun container-nya dihapus.-p 127.0.0.1:3306:3306— membuka port MariaDB hanya kelocalhost:3306. Ini lebih aman dibanding-p 3306:3306polos, yang otomatis bind ke semua network interface dan bisa diakses dari luar host kalau tidak ada firewall. Kalau memang butuh diakses dari mesin lain, ganti ke-p 3306:3306dan atur firewall-nya sendiri.
💡 Ganti
yourpassworddanmyuserpassworddengan password yang kuat, terutama kalau container ini akan diakses lebih dari sekadar localhost.
Langkah 2: Pastikan Container Sudah Jalan
podman ps
podman logs -f mariadb10
Tunggu sampai muncul baris seperti ready for connections di log sebelum mencoba konek — ini tandanya MariaDB sudah selesai inisialisasi dan siap menerima koneksi.
💡 Khusus di run pertama (saat volume masih kosong dan database baru diinisialisasi), baris ini biasanya muncul dua kali: sekali untuk server sementara yang dipakai menjalankan skrip inisialisasi, lalu sekali lagi setelah MariaDB restart otomatis dan jalan permanen. Kalau kamu konek persis di antara dua baris itu, biasanya akan kena connection refused sesaat — tunggu baris kedua supaya aman.
Langkah 3: Konek ke Database
Dari dalam container:
podman exec -it mariadb10 mariadb -uroot -p
Dari host (kalau sudah punya client mysql/mariadb terinstall):
mariadb -h 127.0.0.1 -P 3306 -uroot -p
Langkah 4: Catatan untuk Rootless Podman
Kalau kamu menjalankan Podman dalam mode rootless dan container gagal start atau muncul error izin (permission denied) saat menulis ke volume, biasanya penyebabnya adalah SELinux. Tambahkan suffix :Z di mount volume-nya supaya Podman melakukan relabeling otomatis:
-v mariadb10_data:/var/lib/mysql:Z
💡 Flag
:Zmemberi tahu Podman bahwa volume ini hanya dipakai oleh satu container, jadi konteks SELinux-nya di-set khusus untuk itu. Kalau volume yang sama dipakai bareng oleh beberapa container, pakai:z(huruf kecil) sebagai gantinya.
Langkah 5: Mengelola Container
Beberapa perintah dasar untuk sehari-hari:
podman stop mariadb10 # hentikan container
podman start mariadb10 # jalankan lagi (data tetap ada)
podman rm mariadb10 # hapus container (volume tetap ada)
podman volume rm mariadb10_data # hapus volume juga, kalau memang mau reset data
Langkah 6: Import Dump SQL ke Database
Kalau kamu migrasi dari server lama atau restore backup, ini cara import file .sql ke MariaDB yang jalan di container.
Opsi 1: Pipe Langsung dari Host (Paling Simpel)
podman exec -i mariadb10 mariadb -uroot -pyourpassword mydb < /path/to/dump.sql
-imenjaga stdin tetap terbuka, supaya isi file bisa di-stream masuk ke container.mydbadalah database tujuan — harus sudah ada (otomatis ada kalau kamu setMARIADB_DATABASEdi Langkah 1, atau buat dulu manual).- Cara ini cukup untuk kebanyakan dump, tapi bisa lambat untuk file yang sangat besar karena semuanya lewat stdin.
Opsi 2: Copy File ke Container Dulu, Baru Import di Dalam
Lebih cocok untuk file .sql yang besar:
podman cp /path/to/dump.sql mariadb10:/tmp/dump.sql
podman exec -it mariadb10 mariadb -uroot -pyourpassword mydb -e "SOURCE /tmp/dump.sql"
atau, cara yang setara:
podman exec -it mariadb10 bash -c "mariadb -uroot -pyourpassword mydb < /tmp/dump.sql"
Kalau Dump Sudah Punya Perintah CREATE DATABASE / USE Sendiri
Kalau dump-nya sudah lengkap dengan statement CREATE DATABASE dan USE, tidak perlu sebutkan nama database — cukup konek saja:
podman exec -i mariadb10 mariadb -uroot -pyourpassword < /path/to/dump.sql
Beberapa Tips Praktis
- Password di command line akan tersimpan di shell history dan terlihat lewat
ps. Lebih aman kosongkan value setelah-psupaya diminta interaktif — meskipun cara ini tidak cocok dipakai bareng piping. Untuk script otomatis, pertimbangkan file kredensial.my.cnfyang di-mount ke container, atau environment variableMYSQL_PWD(sama-sama belum ideal, tapi setidaknya tidak masuk shell history). - File besar: pantau progresnya pakai
pv:pv /path/to/dump.sql | podman exec -i mariadb10 mariadb -uroot -pyourpassword mydb - Dump terkompresi (
.sql.gz):gunzip -c /path/to/dump.sql.gz | podman exec -i mariadb10 mariadb -uroot -pyourpassword mydb
Langkah Selanjutnya
Setup manual seperti di atas sudah cukup untuk development sehari-hari. Kalau kamu butuh MariaDB yang otomatis jalan setiap kali sistem boot — misalnya untuk kebutuhan server — pertimbangkan untuk memindahkan konfigurasi ini ke podman-compose atau Quadlet file, supaya lifecycle container-nya dikelola oleh systemd.