02 October 2017

Instalasi dan Konfigurasi Server MySQL 5.7 pada CentOS 7 untuk Akses Jauh (Remote Access) dari Jaringan Lokal

Sebagaimana diketahui, MySQL adalah sistem manajemen basis data relasional / Relational Database Management System (RDBMS) kode sumber bebas terbuka (free open source) yang sangat populer. Dalam kesempatan kali ini saya akan berbagi cara instalasi MySQL versi 5.7 pada CentOS atau Red Hat 7 melalui repositori Yum serta cara megizinkan akses ke MySQL tersebut dari jaringan lokal.

Tahap Instalasi MySQL Server

Menambahkan Repositori Yum Local

Dalam kesempatan ini kita akan menggunakan repositori Yum MySQL resmi dari Oracle. Repositori ini selain menyediakan MySQL server dan client, juga menyediakan utilitas MySQL, MySQL Workbench, Connector/ODBC, dan Connector/Python. Skenario yang digunakan adalah pemasangan baru server MySQL, bukan penggantian atau upgrade server MySQL yang sudah ada.


Untuk menambahkan repositori Yum MySQL resmi kita harus mengunduhnya dari situs Oracle. Pada bagian Select Operating System, pilih Red Hat Enterprise Linux/Oracle Linux pilih Red Hat Enterprise Linux 7 / Oracle Linux 7 (x86, 64-bit), RPM Package MySQL Server atau Red Hat Enterprise Linux 7 / Oracle Linux 7 (x86, 32-bit), RPM Package MySQL Server kemudian klik Download. Diperlukan akun untuk melakukan pengunduhan (atau kalau lagi males bisa pake Bugmenot) (versi terakhir saat artikel ini ditulis adalah 5.7.19).

Pasang paket yang telah diunduh dengan perintah sebagai berikut:
yum localinstall mysql57-community-release-el7-7.noarch.rpm

Pemasangan di atas sekaligus selain menerapkan repositori baru juga mengunduh kunci GPG untuk pemeriksaan integritas paket.

Pastikan repositori Yum MySQL sudah berhasil ditambahkan dengan perintah sebagai berikut:
yum repolist enabled | grep "mysql.*-community.*"

Memasang MySQL

Pasang MySQL dengan perintah di bawah
yum install mysql-community-server

Menjalankan Server MySQL

Jalankan layanan MySQL dengan perintah di bawah
systemctl start mysqld

Periksa status layanan MySQL
systemctl status mysqld

Pastikan versi MySQL yang terpasang
mysql --version

Mengamankan Pemasangan MySQL

Diperlukan perintah mysql_secure_installation untuk mengamankan pemasangan MySQL dengan menjalankan pengaturan penting seperti sandi bagi root, menghapus pengguna anonim, menghapus login root, dan lain sebagainya.

Sebagai catatan, MySQL versi 5.7 ke atas membuat sandi acak yang disimpan di /var/log/mysqld.log setelah proses pemasangan. Jalankan perintah berikut untuk mengetahui sandi acak tersebut:

grep 'temporary password' /var/log/mysqld.log

Setelah mendapatkan sandi acak tersebut, jalankan perintah berikut dan masukkan sandi acak tadi. Ikuti petunjuk yang diberikan secara hati-hati dan jawab sesuai kebutuhan.
mysql_secure_installation


Sambungkan ke Server MySQL


Sambungkan server MySQL yang baru tadi dengan perintah
mysql -u root -p


Konfigurasi Akses Jauh Server MySQL

Konfigurasi Firewalld untuk Mengizinkan Trafik MySQL


Secara bawaan, CentOS 7 menggunakan firewalld sebagai perangkat lunak dinding api sistem yang mana memiliki aturan yang  ketat. Sementara MySQL menggunakan port 3306 untuk berkomunikasi, port ini secara bawaan tidak dalam keadaan open sehingga untuk mengizinkan akses jarak jauh dari jaringan lokal maka kita harus memutakhirkan pengaturan firewalld.
Cek status service firewalld terlebih dahulu
systemctl status firewalld

Pastikan service mysql terdaftar  oleh firewalld dengan perintah sebagai berikut:
firewall-cmd --get-services

Untuk mengizinkan akses jarak jauh dari jaringan lokal, kita harus membuka port 3306 ke seluruh IP. Namun pastikan bahwa jika dan hanya jika server MySQL ini memang berada dalam mesin dengan IP lokal.

firewall-cmd --zone=trusted --add-port=3306/tcp --permanent

firewall-cmd --zone=public --add-service=mysql --permanent



Muat ulang firewalld
firewall-cmd  --reload



Pastikan port 3306 sudah listening
netstat -tulpn


Konfigurasi Pengguna untuk Akses Remote pada Basis Data MySQL
Untuk mengizinkan akses remote, sunting berkas pengaturan server MySQL di /etc/my.cnf. Yang perlu diperhatikan adalah memberi komentar baris skip-networking dan menambahkan atau menyunting baris bind-address dengan alamat IP server MySQL kita:
bind-address=Alamat-IP-Server-MySQL

Sebagai contoh, jika alamat IP server MySQL kita adalah 192.168.100.7 maka dalam berkas tersebut menjadi seperti berikut ini (urutan tidak berpengaruh)

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
bind-address=192.168.100.7
#skip-networking


Simpan dan tutup berkas kemudian jalankan ulang layanan mysqld.
systemctl restart mysqld

Memberikan Akses ke Alamat IP Jarak Jauh


Sambungkan ke MySQL
mysql -u root -p
Misalkan kita akan membuat basis data appdb yang akan dipakai untuk basis data.

Hibahkan akses ke basis data baru

mysql> CREATE DATABASE appdb;
mysql
> GRANT ALL ON appdb.* TO root@'192.168.100.%' IDENTIFIED BY 'sandi';

Perhatikan bahwa tanda % sebagai tanda wildcard artinya semua pengguna root (sebagai pengguna umum yang biasanya dibuat) dengan IP 192.168.100.x/24 akan bisa mengakses basis data appdb pada server MySQL ini.

Jika ingin menghibahkan ke semua basis data di server MySQL, jalankan perintah sebagai berikut:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.100%' IDENTIFIED BY 'sandi-anda' WITH GRANT OPTION;

Rujukan
https://devops.profitbricks.com/tutorials/install-mysql-on-centos-7/
https://wiki.mikejung.biz/Firewalld
https://www.digitalocean.com/community/questions/mysql-remote-access
https://www.tecmint.com/install-latest-mysql-on-rhel-centos-and-fedora/
https://mariadb.com/kb/en/library/configuring-mariadb-for-remote-client-access/




0 komentar:

Hitung






Komentar

Tentang Blog Ini

Seorang pembelajar yang berharap tidak berhenti belajar, seorang hamba yang berharap tidak berhenti menghamba

Followers