Panduan Lengkap: Cara Install dan Konfigurasi MySQL 8.4 LTS di AlmaLinux 9
Pendahuluan
MySQL 8.4 LTS adalah versi Long Term Support dari MySQL yang dirancang khusus untuk penggunaan jangka panjang, terutama di lingkungan server produksi. Berbeda dengan versi reguler yang lebih sering berubah, MySQL 8.4 LTS menawarkan stabilitas lebih tinggi, dukungan keamanan yang konsisten, serta performa yang sudah teruji untuk menangani aplikasi web dan sistem database skala kecil hingga besar. Inilah alasan kenapa banyak administrator server dan developer memilih MySQL 8.4 LTS, karena selain aman dan stabil, versi ini juga meminimalkan risiko error saat update, sehingga sangat cocok digunakan pada server yang membutuhkan keandalan dan uptime tinggi.
Mengenal MySQL 8.4 LTS
MySQL 8.4 LTS merupakan bagian dari skema rilis baru MySQL yang membedakan antara LTS (Long Term Support) dan Innovation Release. Versi LTS difokuskan pada stabilitas dan dukungan jangka panjang, sehingga sangat cocok untuk server produksi yang membutuhkan sistem database andal dan minim perubahan besar. Sementara itu, Innovation Release lebih sering mendapatkan pembaruan fitur terbaru, namun siklus dukungannya lebih singkat dan umumnya ditujukan untuk kebutuhan pengembangan atau pengujian.
Dari sisi fitur, MySQL 8.4 LTS membawa berbagai peningkatan penting seperti performa InnoDB yang lebih optimal, sistem keamanan yang lebih ketat secara default, serta penggunaan character set UTF8MB4 sebagai standar. Selain itu, MySQL 8.4 LTS mendapatkan update keamanan dan perbaikan bug secara berkala dalam jangka waktu panjang, sehingga administrator server tidak perlu sering melakukan upgrade mayor yang berisiko. Dengan siklus dukungan yang jelas dan fokus pada keamanan, MySQL 8.4 LTS menjadi pilihan ideal untuk sistem database yang digunakan secara terus-menerus di lingkungan produksi
Persiapan Sistem AlmaLinux 9
- CPU: Minimal 1 Core (2 Core lebih disarankan)
- RAM: Minimal 2 GB
- Storage: Minimal 10 GB (SSD lebih baik)
- OS: AlmaLinux 9.x 64-bit
- Akses: Root atau sudo
- Koneksi: Internet aktif
Catatan: MySQL 8.4 LTS bisa berjalan di resource kecil, tetapi performanya terbatas dan tidak disarankan untuk produksi.
Update Sistem dan Persiapan Akses Server
- Update Sistem Operasi AlmaLinux
Pastikan sistem dalam kondisi terbaru sebelum instalasi MySQL agar tidak terjadi konflik dependensi.
sudo dnf update -y -
Cek Versi AlmaLinux
- Pastikan server menggunakan AlmaLinux 9.
cat /etc/almalinux-releaseOutput :
[root@lab ~]# cat /etc/almalinux-release AlmaLinux release 9.7 (Moss Jungle Cat)
- Pastikan server menggunakan AlmaLinux 9.
-
Konfigurasi Akses Root / Sudo
Pastikan kamu login sebagai root atau menggunakan user dengan hak sudo.-
Cek hak sudo:
sudo -vCatatan : Jika tidak ada error, berarti user sudah memiliki akses sudo.
-
Menambahkan Repository Resmi MySQL
- Menghapus Repository MySQL Lama (Jika Ada)
- Jika sebelumnya pernah menginstall MySQL atau MariaDB, sebaiknya bersihkan repository lama untuk menghindari konflik versi.
sudo dnf remove mysql* mariadb* -y sudo dnf clean all - Cek repository MySQL yang masih aktif (opsional):
sudo dnf repolist | grep mysqlOutput :
[root@lab ~]# sudo dnf repolist | grep mysql mysql-8.4-lts-community MySQL 8.4 LTS Community Server mysql-connectors-community MySQL Connectors Community mysql-tools-8.4-lts-community MySQL Tools 8.4 LTS Community
- Jika sebelumnya pernah menginstall MySQL atau MariaDB, sebaiknya bersihkan repository lama untuk menghindari konflik versi.
- Install MySQL Community Repository
- Unduh dan install repository resmi MySQL untuk AlmaLinux 9 (RHEL 9 compatible).
sudo dnf install -y https://dev.mysql.com/get/mysql84-community-release-el9-1.noarch.rpm - Mengaktifkan Repository MySQL 8.4 LTS
Nonaktifkan repository MySQL lain dan pastikan hanya MySQL 8.4 yang aktif.
sudo dnf repolist all | grep mysqlOutput :

- Verifikasi repository aktif:
sudo dnf repolist enabled | grep mysqlOutput :
[root@Lab ~]# sudo dnf repolist enabled | grep mysql mysql-8.4-lts-community MySQL 8.4 LTS Community Server mysql-connectors-community MySQL Connectors Community mysql-tools-8.4-lts-community MySQL Tools 8.4 LTS Community
- Unduh dan install repository resmi MySQL untuk AlmaLinux 9 (RHEL 9 compatible).
Instalasi MySQL 8.4 LTS di AlmaLinux 9
- Proses Install MySQL Server
Setelah repository MySQL 8.4 LTS aktif, lakukan instalasi MySQL Server menggunakan perintah berikut:
sudo dnf install -y mysql-community-server - Verifikasi Versi MySQL
Setelah instalasi selesai, pastikan MySQL yang terpasang adalah versi 8.4 LTS:
Output :mysqld --version
[root@lab ~]# mysqld --version /usr/sbin/mysqld Ver 8.4.8 for Linux on x86_64 (MySQL Community Server - GPL) - Struktur Direktori MySQL
Secara default, MySQL 8.4 LTS di AlmaLinux 9 menggunakan struktur direktori berikut:- /var/lib/mysql
Menyimpan seluruh data database MySQL - /etc/my.cnf
File konfigurasi utama MySQL - /etc/my.cnf.d/
Direktori konfigurasi tambahan - /var/log/mysqld.log
Log error dan aktivitas MySQL Server - /usr/bin/mysql
Binary client MySQL
Catatan : Struktur ini penting untuk diketahui agar memudahkan proses konfigurasi, troubleshooting, dan maintenance MySQL di server.
- /var/lib/mysql
Menjalankan dan Mengamankan MySQL Server
- Menjalankan Service MySQL
Setelah instalasi selesai, jalankan service MySQL dengan perintah berikut:
sudo systemctl start mysqld - Pastikan MySQL berjalan normal:
sudo systemctl status mysqld - Mengaktifkan MySQL Saat Boot
Agar MySQL otomatis berjalan setiap server dinyalakan ulang, aktifkan service MySQL:
sudo systemctl enable mysqld - Inisialisasi Password Root MySQL 8.4
- Cek temporary password:
Output :sudo grep 'temporary password' /var/log/mysqld.log
A temporary password is generated for root@localhost: Abc#123!xyzCatatan : Simpan Password Abc#123!xyz untuk dapat login kedalam mysql
- Login pertama kali ke MySQL
mysql -u root -pCatatan : Masukkan temporary password dari log.
- Set password root baru (WAJIB)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'PasswordBaru_Kuat123!'; EXIT;
- Cek temporary password:
- Menjalankan mysql_secure_installation
MySQL 8.4 LTS menyediakan script bawaan untuk melakukan konfigurasi keamanan dasar. Jalankan perintah berikut:
sudo mysql_secure_installationSelama proses ini, kamu akan diminta untuk:
- Mengatur password root MySQL
- Menghapus user anonim
- Menonaktifkan login root secara remote
- Menghapus database test
- Reload privilege table
- Disarankan menjawab YES (Y) untuk semua opsi demi keamanan server.
Konfigurasi Dasar MySQL 8.4
- Lokasi File Konfigurasi (my.cnf)
- File konfigurasi utama MySQL berada di:
/etc/my.cnf - Selain itu, MySQL juga membaca konfigurasi tambahan dari direktori:
/etc/my.cnf.d/Catatan : Disarankan melakukan perubahan konfigurasi pada file custom di direktori ini agar tidak tertimpa saat update.
- File konfigurasi utama MySQL berada di:
- Pengaturan Port dan Bind Address
- Secara default, MySQL berjalan pada port 3306 dan hanya bisa diakses secara lokal. Contoh konfigurasi dasar:
[mysqld] port = 3306 bind-address = 127.0.0.1Catatan : Gunakan 127.0.0.1 untuk server lokal. Jika MySQL perlu diakses dari luar server, sesuaikan bind address dengan kebutuhan dan pastikan firewall dikonfigurasi dengan benar.
- Setelah melakukan perubahan, restart MySQL:
sudo systemctl restart mysqld
- Secara default, MySQL berjalan pada port 3306 dan hanya bisa diakses secara lokal. Contoh konfigurasi dasar:
- Konfigurasi Timezone
- Untuk memastikan waktu database sesuai dengan waktu server, set timezone MySQL:
[mysqld] default-time-zone = '+07:00'Atau sesuaikan dengan timezone server kamu.
-
Reload service MySQL setelah perubahan:
sudo systemctl restart mysqld
- Untuk memastikan waktu database sesuai dengan waktu server, set timezone MySQL:
- Set Character Set dan Collation (UTF8MB4)
- Agar MySQL mendukung karakter lengkap (emoji, simbol, multibahasa), gunakan UTF8MB4 sebagai default:
[mysqld] character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci - Untuk client:
[client] default-character-set = utf8mb4 - Restart MySQL setelah konfigurasi:
sudo systemctl restart mysqld
- Agar MySQL mendukung karakter lengkap (emoji, simbol, multibahasa), gunakan UTF8MB4 sebagai default:
Manajemen User dan Hak Akses
- Membuat User MySQL Baru
- Disarankan tidak menggunakan user root untuk aplikasi. Login ke MySQL terlebih dahulu:
mysql -u root -p - Buat user baru:
CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'passwordkuat';
- Disarankan tidak menggunakan user root untuk aplikasi. Login ke MySQL terlebih dahulu:
- Grant Privileges
Berikan hak akses sesuai kebutuhan aplikasi (prinsip least privilege):
Jika hanya membutuhkan akses tertentu, sesuaikan privilege yang diberikan.GRANT ALL PRIVILEGES ON nama_database.* TO 'appuser'@'localhost'; FLUSH PRIVILEGES; - Praktik Keamanan User Database
Beberapa praktik keamanan yang disarankan:- Gunakan password yang kuat dan unik
- Pisahkan user admin dan user aplikasi
- Berikan privilege seminimal mungkin
- Hindari penggunaan user root untuk koneksi aplikasi
- Langkah ini membantu menjaga keamanan database dari akses yang tidak diinginkan.
-
Remote Access MySQL (Opsional)
Secara default, MySQL hanya menerima koneksi lokal. Jika perlu akses dari server lain:
Buat user dengan host % atau IP tertentu:CREATE USER 'appuser'@'%' IDENTIFIED BY 'passwordkuat'; GRANT ALL PRIVILEGES ON nama_database.* TO 'appuser'@'%'; FLUSH PRIVILEGES;Pastikan juga:
- bind-address sudah disesuaikan
- Firewall membuka port MySQL (3306)
- Akses remote hanya diberikan jika benar-benar diperlukan
Optimasi Awal Performa MySQL
- Masuk kedalam File berikut
nano /etc/my.cnf - Pengaturan InnoDB Buffer Pool
InnoDB Buffer Pool berfungsi menyimpan data dan index di memori agar akses database lebih cepat.
[mysqld] innodb_buffer_pool_size = 512MCatatan : Gunakan nilai sesuai RAM server. Untuk server kecil, 512 MB–1 GB sudah cukup.
- Max Connections
Menentukan jumlah maksimal koneksi MySQL secara bersamaan.
[mysqld] max_connections = 150Catatan : Nilai ini aman untuk kebanyakan server aplikasi. Jangan terlalu besar agar RAM tidak cepat habis.
-
Query Cache dan Table Cache
Pada MySQL 8.4 LTS, Query Cache sudah tidak digunakan lagi, sehingga tidak perlu konfigurasi tambahan.
Untuk table cache, gunakan pengaturan sederhana berikut:[mysqld] table_open_cache = 400 - Setelah Edit File
WAJIB restart MySQL:
systemctl restart mysqld
Monitoring dan Troubleshooting Dasar MySQL
- Cek Status MySQL
- Cek status service (systemd)
Output :systemctl status mysqld
- Cek status service (systemd)
- Log Error MySQL
Log error sangat penting untuk troubleshooting ketika MySQL gagal start atau terjadi error runtime.I
- Lokasi default di AlmaLinux 9:
/var/log/mysqld.log - Melihat isi log:
Output :tail -n 50 /var/log/mysqld.log
2026-02-02T04:22:34.998647Z 0 [System] [MY-015018] [Server] MySQL Server Initialization - end. 2026-02-02T04:22:35.066497Z 0 [System] [MY-015015] [Server] MySQL Server - start. 2026-02-02T04:22:35.337895Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.4.8) starting as process 2316 2026-02-02T04:22:35.353010Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. 2026-02-02T04:22:36.390290Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended. 2026-02-02T04:22:37.228908Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed. 2026-02-02T04:22:37.229009Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel. 2026-02-02T04:22:37.318691Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock 2026-02-02T04:22:37.318857Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.4.8' socket: '/var/lib/mysql/mysql.sock' port: 3306 MySQL Community Server - GPL. 2026-02-02T05:42:01.282579Z 36 [Warning] [MY-010055] [Server] IP address '198.235.' could not be resolved: Name or service not known 2026-02-02T05:47:24.484468Z 37 [Warning] [MY-010055] [Server] IP address '103.165' could not be resolved: Name or service not known 2026-02-02T06:34:55.739503Z 40 [Warning] [MY-010056] [Server] Host name 'ce57f6dd6d.research-scanner.com' could not be resolved: Name or service not known 2026-02-02T06:37:58.014404Z 41 [Warning] [MY-010056] [Server] Host name 'centos7134233.aspadmin.net' could not be resolved: Name or service not known - Memantau log secara real-time:
Output :tail -f /var/log/mysqld.log
2026-02-02T04:22:37.228908Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed. 2026-02-02T04:22:37.229009Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel. 2026-02-02T04:22:37.318691Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock 2026-02-02T04:22:37.318857Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.4.8' socket: '/var/lib/mysql/mysql.sock' port: 3306 MySQL Community Server - GPL. 2026-02-02T05:42:01.282579Z 36 [Warning] [MY-010055] [Server] IP address '198.237' could not be resolved: Name or service not known 2026-02-02T05:47:24.484468Z 37 [Warning] [MY-010055] [Server] IP address '103.12' could not be resolved: Name or service not known 2026-02-02T06:34:55.739503Z 40 [Warning] [MY-010056] [Server] Host name 'ce57f6dd6d.research-scanner.com' could not be resolved: Name or service not known 2026-02-02T06:37:58.014404Z 41 [Warning] [MY-010056] [Server] Host name 'centos7134233.aspadmin.net' could not be resolved: Name or service not known
- Lokasi default di AlmaLinux 9:
- Mengecek Koneksi MySQL yang Aktif
- Untuk melihat jumlah koneksi yang sedang terhubung ke MySQL:
SHOW STATUS LIKE 'Threads_connected';Output :
mysql> SHOW STATUS LIKE 'Threads_connected'; +-------------------+-------+ | Variable_name | Value | +-------------------+-------+ | Threads_connected | 1 | +-------------------+-------+ 1 row in set (0.01 sec) - Melihat detail user dan host yang sedang terkoneksi:
SHOW PROCESSLIST;Output :
mysql> SHOW PROCESSLIST; +----+-----------------+-----------+------+---------+------+------------------------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +----+-----------------+-----------+------+---------+------+------------------------+------------------+ | 5 | event_scheduler | localhost | NULL | Daemon | 9294 | Waiting on empty queue | NULL | | 42 | root | localhost | NULL | Query | 0 | init | SHOW PROCESSLIST | +----+-----------------+-----------+------+---------+------+------------------------+------------------+ 2 rows in set, 1 warning (0.00 sec)Jika koneksi terlalu banyak, bisa jadi perlu penyesuaian max_connections.
- Untuk melihat jumlah koneksi yang sedang terhubung ke MySQL:
-
Perintah Dasar Diagnostik MySQL
Beberapa perintah penting untuk diagnosis awal performa dan kondisi server:-
Cek uptime MySQL:
SHOW STATUS LIKE 'Uptime';Output :
mysql> SHOW STATUS LIKE 'Uptime'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | Uptime | 8944 | +---------------+-------+ 1 row in set (0.01 sec) - Cek penggunaan InnoDB buffer:
SHOW ENGINE INNODB STATUS\GOutput :
mysql> SHOW ENGINE INNODB STATUS\G *************************** 1. row *************************** Type: InnoDB Name: Status: ===================================== 2026-02-02 12:22:29 140647435560512 INNODB MONITOR OUTPUT ===================================== Per second averages calculated from the last 38 seconds ----------------- BACKGROUND THREAD ----------------- srv_master_thread loops: 3 srv_active, 0 srv_shutdown, 8988 srv_idle srv_master_thread log flush and writes: 0 ---------- SEMAPHORES ---------- OS WAIT ARRAY INFO: reservation count 13 OS WAIT ARRAY INFO: signal count 8 RW-shared spins 0, rounds 0, OS waits 0 RW-excl spins 0, rounds 0, OS waits 0 RW-sx spins 0, rounds 0, OS waits 0 Spin rounds per wait: 0.00 RW-shared, 0.00 RW-excl, 0.00 RW-sx ------------ TRANSACTIONS ------------ Trx id counter 1297 Purge done for trx's n:o < 1296 undo n:o < 0 state: running but idle History list length 0 LIST OF TRANSACTIONS FOR EACH SESSION: ---TRANSACTION 422122566036696, not started 0 lock struct(s), heap size 1128, 0 row lock(s) ---TRANSACTION 422122566035888, not started 0 lock struct(s), heap size 1128, 0 row lock(s) ---TRANSACTION 422122566035080, not started 0 lock struct(s), heap size 1128, 0 row lock(s) -------- FILE I/O -------- I/O thread 0 state: waiting for completed aio requests (insert buffer thread) I/O thread 1 state: waiting for completed aio requests (read thread) I/O thread 2 state: waiting for completed aio requests (read thread) I/O thread 3 state: waiting for completed aio requests (read thread) I/O thread 4 state: waiting for completed aio requests (read thread) I/O thread 5 state: waiting for completed aio requests (write thread) I/O thread 6 state: waiting for completed aio requests (write thread) I/O thread 7 state: waiting for completed aio requests (write thread) I/O thread 8 state: waiting for completed aio requests (write thread) Pending normal aio reads: [0, 0, 0, 0] , aio writes: [0, 0, 0, 0] , ibuf aio reads: Pending flushes (fsync) log: 0; buffer pool: 0 871 OS file reads, 601 OS file writes, 188 OS fsyncs 0.00 reads/s, 0 avg bytes/read, 0.00 writes/s, 0.00 fsyncs/s ------------------------------------- INSERT BUFFER AND ADAPTIVE HASH INDEX ------------------------------------- Ibuf: size 1, free list len 0, seg size 2, 0 merges merged operations: insert 0, delete mark 0, delete 0 discarded operations: insert 0, delete mark 0, delete 0 Hash table size 34679, node heap has 0 buffer(s) Hash table size 34679, node heap has 0 buffer(s) Hash table size 34679, node heap has 0 buffer(s) Hash table size 34679, node heap has 0 buffer(s) Hash table size 34679, node heap has 0 buffer(s) Hash table size 34679, node heap has 0 buffer(s) Hash table size 34679, node heap has 0 buffer(s) Hash table size 34679, node heap has 0 buffer(s) 0.00 hash searches/s, 0.00 non-hash searches/s --- LOG --- Log capacity 104857600 Log capacity used 104857600 Log sequence number 19313804 Log buffer assigned up to 19313804 Log buffer completed up to 19313804 Log written up to 19313804 Log flushed up to 19313804 Added dirty pages up to 19313804 Pages flushed up to 19313804 Last checkpoint at 19313804 Log minimum file id is 5 Log maximum file id is 5 281 log i/o's done, 0.00 log i/o's/second ---------------------- BUFFER POOL AND MEMORY ---------------------- Total large memory allocated 0 Dictionary memory allocated 520939 Buffer pool size 8192 Free buffers 7186 Database pages 1006 Old database pages 351 Modified db pages 0 Pending reads 0 Pending writes: LRU 0, flush list 0, single page 0 Pages made young 160, not young 1542 0.00 youngs/s, 0.00 non-youngs/s Pages read 846, created 164, written 281 0.00 reads/s, 0.00 creates/s, 0.00 writes/s No buffer pool page gets since the last printout Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s LRU len: 1006, unzip_LRU len: 0 I/O sum[0]:cur[0], unzip sum[0]:cur[0] -------------- ROW OPERATIONS -------------- 0 queries inside InnoDB, 0 queries in queue 0 read views open inside InnoDB Process ID=2316, Main thread ID=140646891386432 , state=sleeping Number of rows inserted 0, updated 0, deleted 0, read 0 0.00 inserts/s, 0.00 updates/s, 0.00 deletes/s, 0.00 reads/s Number of system rows inserted 442, updated 340, deleted 168, read 5542 0.00 inserts/s, 0.00 updates/s, 0.00 deletes/s, 0.00 reads/s ---------------------------- END OF INNODB MONITOR OUTPUT ============================ 1 row in set (0.01 sec) - Cek variabel konfigurasi tertentu:
SHOW VARIABLES LIKE 'max_connections';Output :
mysql> SHOW VARIABLES LIKE 'max_connections'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | max_connections | 151 | +-----------------+-------+ 1 row in set (0.02 sec)
-
Backup dan Maintenance MySQL
- Backup dan Maintenance MySQL
mysqldump adalah tool bawaan MySQL yang paling umum digunakan untuk melakukan backup database secara manual.- Backup satu database:
mysqldump -u root -p nama_database > backup_nama_database.sql - Backup semua database:
mysqldump -u root -p --all-databases > backup_semua_database.sql -
Backup database beserta user dan privileges (disarankan):
mysqldump -u root -p --all-databases --routines --triggers --events > full_backup.sql - Best Practice Maintenance Database
Agar MySQL tetap stabil dan optimal di server produksi, lakukan maintenance rutin berikut:- Lakukan backup harian (otomatis via cron)
- Simpan backup di server terpisah atau object storage
- Monitor ukuran database dan log secara berkala
- Hapus user dan database yang tidak digunakan
- Jalankan update MySQL dan OS secara berkala
- Uji restore backup secara berkala (jangan cuma backup saja)
- Backup satu database:
Best Practice Keamanan MySQL di Server Produksi
- Firewall dan Port Database
Secara default MySQL berjalan di port 3306. Untuk server produksi, pastikan port ini tidak terbuka ke publik.
- Rekomendasi:
- Izinkan akses hanya dari IP tertentu (aplikasi/server internal)
- Tutup port 3306 jika MySQL hanya digunakan lokal
- Contoh cek port MySQL:
Catatan : Jika menggunakan firewall Buka port, hanya untuk IP tertentu, Hindari membuka 0.0.0.0/0ss -tulpn | grep 3306
- Rekomendasi:
-
Pembatasan Akses Root MySQL
User root MySQL tidak disarankan digunakan oleh aplikasi.-
Best practice:
- Gunakan root hanya untuk administrasi
- Batasi login root hanya dari localhost
- Buat user terpisah untuk setiap aplikasi
- Cek akses root:
SELECT Host FROM mysql.user WHERE User='root';Jika ada akses selain localhost, sebaiknya dihapus.
-
- Update dan Patch Berkala
Keamanan MySQL sangat bergantung pada update rutin.
dnf update mysql* -y dnf update -yCatatan : Selalu lakukan backup sebelum update besar.
-
Audit User Database
User yang tidak terpakai adalah celah keamanan.-
Audit rutin yang disarankan:
-
Cek daftar user:
SELECT User, Host FROM mysql.user;
-
- Hapus user tidak aktif
Pastikan setiap user hanya memiliki privilege yang dibutuhkan
- Hindari privilege GRANT ALL tanpa alasan jelas
SELECT User, Host FROM mysql.user;Catatan : Hapus user tidak aktif,Pastikan setiap user hanya memiliki privilege yang dibutuhkan,Hindari privilege GRANT ALL tanpa alasan jelas
- Hindari privilege GRANT ALL tanpa alasan jelas
-
Penutup
Sebagai penutup, panduan ini membahas instalasi dan konfigurasi MySQL 8.4 LTS di AlmaLinux 9 secara menyeluruh, mulai dari persiapan sistem, penggunaan repository resmi, instalasi server, pengamanan, optimasi performa, hingga backup dan monitoring dasar. Dengan konfigurasi yang tepat, MySQL 8.4 LTS sangat cocok digunakan sebagai database server untuk kebutuhan produksi karena stabil, aman, dan memiliki dukungan jangka panjang. Untuk skalabilitas ke depan, Anda dapat mulai memisahkan server aplikasi dan database, mengoptimalkan query serta resource server, dan menerapkan monitoring performa secara rutin. Ketika aplikasi membutuhkan uptime tinggi atau beban akses semakin besar, penerapan replikasi MySQL atau solusi high availability menjadi langkah yang tepat untuk menjaga ketersediaan dan keandalan sistem database dalam jangka panjang.


