Cara Pasang Database Server MariaDB Di Linux Ubuntu | UNIX LINUX EXPLORE
Edit

Cara Pasang Database Server MariaDB Di Linux Ubuntu

MariaDB adalah cabang sistem manajemen basis data relasional MySQL yang dikembangkan oleh komunitas dan dimaksudkan untuk tetap gratis di bawah lisensi GNU GPL.

Sebagai cabang dari sistem perangkat lunak sumber terbuka terkemuka, MariaDB terkenal karena dipimpin oleh pengembang asli MySQL, yang melakukan fork karena kekhawatiran akan akuisisinya oleh Oracle.

1. Instalasi Software MariaDB

Secara default paket MariaDB tak tersedia di repositori Ubutnu, anda harus mendapatkan versi stabil  dan terbaru langsung dari proyek situs resmi MariaDB atau Github. Untuk memasang MariaDB pada sistem Linux seperti Ubuntu, Debian atau lainnya, anda dapat mengikuti script yang ada di bawah ini.

Memasang GPG-KEY MariaDB
$ curl --silent https://supplychain.mariadb.com/MariaDB-Server-GPG-KEY \
    | gpg --dearmor | \
    sudo tee /etc/apt/keyrings/MariaDB-Server.gpg > /dev/null

$ curl --silent https://supplychain.mariadb.com/MariaDB-MaxScale-GPG-KEY \
    | gpg --dearmor | \
    sudo tee /etc/apt/keyrings/MariaDB-MaxScale.gpg > /dev/null

$ curl --silent https://supplychain.mariadb.com/MariaDB-Enterprise-GPG-KEY \
    | gpg --dearmor | \
    sudo tee /etc/apt/keyrings/MariaDB-Enterprise.gpg > /dev/null
Setelah anda memasang kunci GPG-KEY lanjutkan dengan membuka file MariaDB yang ada di folder /etc/apt/sources.list.d/mariadb.sources.


# MariaDB Server
# To use a different major version of the server, or to pin to a specific minor
# version, change URI below.
Types: deb
URIs: https://dlm.mariadb.com/repo/mariadb-server/10.11/repo/ubuntu
Suites: jammy
Components: main
Architectures: amd64 arm64
Signed-By: /etc/apt/keyrings/MariaDB-Server.gpg

# MariaDB MaxScale
# To use the latest stable release of MaxScale, use "latest" as the version
# To use the latest beta (or stable if no current beta) release of MaxScale, use
# "beta" as the version
Types: deb
URIs: https://dlm.mariadb.com/repo/maxscale/latest/apt
Suites: jammy
Components: main
Architectures: amd64 arm64
Signed-By: /etc/apt/keyrings/MariaDB-MaxScale.gpg

# MariaDB Tools
# MariaDB Tools are a collection of advanced command-line tools.
Types: deb
URIs: http://downloads.mariadb.com/Tools/ubuntu
Suites: jammy
Components: main
Architectures: amd64
Signed-By: /etc/apt/keyrings/MariaDB-Enterprise.gpg

# -*- mode: debsources; indent-tabs-mode: nil; tab-width: 4; -*-
Setelah itu buat file preferensi untuk memberikan paket dari repositori MariaDB prioritas tertinggi, untuk menghindari konflik dengan paket dari OS dan repositori lain:

/etc/apt/preferences.d/mariadb.pref
Package: *
Pin: origin dlm.mariadb.com
Pin-Priority: 1000
Jalankan proses update.

Update
$ sudo apt update
Setelah kunci dan repositori ditambahkan dan basis data paket diperbarui, anda dapat langsung memasang MariaDB dengan perintah berikut ini.

Install MariaDB
$ sudo apt install mariadb-server
Catatan:
Jika server Oracle MySQL sudah terpasang, server tersebut akan dihapus, tetapi tidak akan dihapus tanpa konfirmasi. File konfigurasi MySQL server akan disimpan dan digunakan oleh MariaDB.

Pada sistem Ubuntu MariaDB berjalan sebagai layanan Systemd dengan nama mariadb.service. Layanan tersebut tidak dapat langsung dijalankan, anda harus memberikan perintah untuk mulai MariaDB.

Check status systemd MariaDB
$ systemctl status mariadb.service
○ mariadb.service - MariaDB 10.10.2 database server
    Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
    Drop-In: /etc/systemd/system/mariadb.service.d
            └─migrated-from-my.cnf-settings.conf
    Active: inactive (dead)
    Docs: man:mariadbd(8)
            https://mariadb.com/kb/en/library/systemd/

2. Konfigurasi MariaDB

Konfigurasi yang disajikan di sini sangat berbeda dari apa yang biasanya diinstal oleh paket perangkat lunak sebagai default. Ini adalah persiapan untuk tugas yang harus diselesaikan server.

Pada sistem Ubuntu, MariaDB dimulai dan dikontrol oleh systemd sebagai unit layanan mariadb.service. Untuk memulai, menghentikan, atau memulai ulang server MariaDB, anda dapat menggunakan perintah systemctl.

Jalankan MariaDB
$ systemctl start mariadb.service
$ systemctl restart mariadb.service
$ systemctl stop mariadb.service
Perintah “reload” tidak didukung pada layanan MariaDB. Anda dapat melihat status dan pesan kesalahan yang ditulis di jurnal systemd, dan untuk memantau server, anda dapat menggunakan perintah journalctl.


$ journalctl -u mariadb.service
$ journalctl -f -u mariadb.service

a. Kustomisasi Systemd MariaDB

File unit layanan MariaDB diinstal di folder /lib/systemd/system/mariab.service. Opsi kustom harus diterapkan agar MariaDB dapat berjalan normal, anda ubah file /lib/systemd/system/mariab.service tersebut.


$ sudo edit mariab.service
Contoh scriptnya systemd nya dapat anda lihat seperti di bawah ini.


# etc/systemd/system/mariadb.service.d/override.conf
[Unit]
After=sys-devices-virtual-net-wg0.device unbound.service
BindsTo=sys-devices-virtual-net-wg0.device

b. mysqld_safe

Sebelum MariaDB versi 10.1.8, server dimulai oleh skrip init atau sebagai layanan upstart pada sebagian besar sistem UNIX. Skrip ini juga menerapkan opsi yang ditemukan dalam berkas konfigurasi MySQL di bagian [mysqld_safe] atau [safe_mysqld].

Catatan:
Untuk mengedit file mysqld_safe, konvensi yang digunakan adalah nama variabel yang selalu dicantumkan dengan ‘_’ dan opsi dengan ‘-‘.

Selalu gunakan ‘⁻’ (tanda hubung) saat mengatur opsi dalam berkas konfigurasi atau opsi baris perintah. Seperti key-buffer-size = 64K.

Selalu gunakan ‘_’ (garis bawah) dalam kueri SQL di server. Seperti SHOW VARIABLES LIKE 'key_buffer_size';

File konfigurasi utama MariaDB bernama /etc/mysql/mariadb.cnf, anda dapat mengubah file tersebut sesuai kebutuhan. Di bawah ini adalah contoh script file /etc/mysql/mariadb.cnf yang telah kami sesuaikan dengan sistem yang sedang kami jalankan.

/etc/mysql/mariadb.cnf
#
# MariaDB database server version 10.10.2 configuration file.
#
# For explanations see:
#  * https://roll.urown.net/server/mariadb/
#  * https://mariadb.com/kb/en/library/server-system-variables/
#


[client]
#
# Character-Set
# Default: Latin1
default-character-set = utf8mb4

#
# UNIX Sockets & TCP/IP
port = 3306
socket = /run/mysqld/mysqld.sock


[mysqld]
#
# Basic Settings
#
user = mysql
pid-file = /run/mysqld/mysqld.pid
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc_messages_dir = /usr/share/mysql
lc_messages = en_US
#
# If applications support it, this stricter sql_mode prevents some
# mistakes like inserting invalid dates etc.
#sql_mode       = NO_ENGINE_SUBSTITUTION,TRADITIONAL

# The default storage engine. The default storage engine must be enabled at
# server startup or the server won't start.
# Default: InnoDB
default_storage_engine = InnoDB

#
# Character-Set
# Default: Latin1
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci

#
# UNIX Sockets & TCP/IP
#
socket = /run/mysqld/mysqld.sock

# By default, the MariaDB server listens for TCP/IP connections on a network
# socket bound to a single address, 0.0.0.0. You can specify an alternative when
# the server starts using this option; either a host name, an IPv4 or an IPv6
# address. In Debian and Ubuntu, the default bind_address is 127.0.0.1, which
# binds the server to listen on localhost only.
# Debian-Default: 127.0.0.1
# Default: 0.0.0.0 / :: (All available IPv4 and IPv6 interfaces)
bind-address = ::
port = 3306

# If set to ON, only IP addresses are used for connections. Host names are not
# resolved. All host values in the GRANT tables must be IP addresses (or
# localhost).
# Default: OFF
skip-name-resolve = ON

# Set longer periods to avoid timeout errors
connect_timeout = 600
wait_timeout = 28800


# This was formally known as [safe_mysqld]. Both versions are currently parsed.
[mysqld_safe]
socket = /run/mysqld/mysqld.sock
nice = 0


[mysqldump]
quick
quote-names
max_allowed_packet = 16M


[mysql]
#no-auto-rehash # faster start of mysql but no tab completion


[isamchk]
key_buffer = 16M

#
# Additional settings will override anything in this file!
# The files must end with '.cnf', otherwise they'll be ignored.
#
!includedir /etc/mysql/conf.d/

# -*- mode: ini; tab-width: 4; indent-tabs-mode: nil -*-
Pengaturan penting pada script di atas sebagai berikut
  • skip-name-resolve = ON, karena server DNS kita akan mendapatkan datanya dari basis datanya.
  • bind-address, diatur untuk mendengarkan semua antarmuka. Karena kita memerlukan akses jaringan untuk replikasi dengan server lain. Sayangnya Anda hanya dapat mengatur satu antarmuka (biasanya localhost) atau semuanya. Karena kita memerlukan localhost DAN akses eksternal, karena tidak semua klien kita dapat menggunakan soket UNIX, kita perlu membuka semuanya. Ini berarti kita harus mengelola hak akses pengguna server basis data kita dengan sangat hati-hati dan kita memerlukan firewall untuk memblokir akses jarak jauh yang tidak diinginkan.
Pada contoh script di atas, kami tidak mengubah file debian.cnf dan debian-start. Anda juga dapat membuat file tambahan dari /etc/mysql/conf.d/ dan /etc/mysql/mariadb.conf.d/, tujuannya tak lain adalah agar MariaDB dapat tetap kompatibel dengan server Oracle MySQL.

Pengaturan konfigurasi yang kompatibel dengan kedua produk harus disimpan di /etc/mysql/conf.d/, sedangkan pengaturan yang hanya berfungsi pada MariaDB harus disimpan di /etc/mysql/mariadb.conf.d/. File /etc/mysql/conf.d/mariadb.cnf akan memuatnya, tetapi hanya untuk produk yang kompatibel dengan MariaDB.

c. Character Sets

Untuk menggunaakn Character Sets, anda harus selalu menggunakan UTF-8 sebagai ganti Latin1 sebagai default untuk server dan klien. Kemudian, buka /etc/mysql/my.cnf dan hapus komentar pada tiga baris UTF-8. Seperti contoh di bawah ini.


[client]
#
# Character-Set
# Default: Latin1
default-character-set = utf8mb4

[mysqld]
#
# Character-Set
# Default: Latin1
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
Setelah selesai melakukan konfigurasi, mulai ulang server MariaDB, dengan perintah berikut.

Restart MariaDB
$ sudo systemctl restart mariadb.service

d. UNIX Sockets & TCP/IP

Versi terkini server MariaDB dan MySQL dapat diatur untuk mendengarkan tidak ada, satu Alamat IP tunggal, atau semuanya, terlepas dari versi IP.

Jadi untuk host bertumpuk ganda yang mendengarkan pada IPv6 dan IPv4, atau host yang harus dapat dijangkau pada antarmuka localhost/127.0.0.1 dan antarmuka jaringan nyata, server harus diatur untuk mendengarkan pada semua antarmuka. Server tidak dapat dibatasi untuk mendengarkan misalnya localhost dan satu alamat IP. Server dapat mendengarkan satu atau semuanya.

Edit bagian yang relevan dari file /etc/mysql/my.cnf seperti contoh di bawah ini.

/etc/mysql/my.cnf
[client]

#
# UNIX Sockets & TCP/IP
port = 3306
socket = /run/mysqld/mysqld.sock

[mysqld]
# UNIX Sockets & TCP/IP
#
socket = /run/mysqld/mysqld.sock

# By default, the MariaDB server listens for TCP/IP connections on a network
# socket bound to a single address, 0.0.0.0. You can specify an alternative when
# the server starts using this option; either a host name, an IPv4 or an IPv6
# address. In Debian and Ubuntu, the default bind_address is 127.0.0.1, which
# binds the server to listen on localhost only.
# Debian-Default: 127.0.0.1
# Default: 0.0.0.0 / :: (All available IPv4 and IPv6 interfaces)
bind-address = ::
port = 3306

# If set to ON, only IP addresses are used for connections. Host names are not
# resolved. All host values in the GRANT tables must be IP addresses (or
# localhost).
# Default: OFF
skip-name-resolve = ON

# Set longer periods to avoid timeout errors
connect_timeout = 600
wait_timeout = 28800

Cara penggunaan MariaDB hampir sama dengan MySQL server, karena keduanya berasal dari rahim yang sama. MariaDB  juga memiliki fitur yang tangguh, fleksibilitas, dan semua fiturnya hampir sama dengan MySQL server. Apakah Anda seorang administrator basis data, pengembang, atau seseorang yang ingin tahu tentang basis data sumber terbuka, MariaDB menawarkan opsi yang menarik dengan pengembangan yang digerakkan oleh komunitas, kinerja yang kuat, dan berbagai kasus penggunaan.