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.
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.*"
yum install mysql-community-server
systemctl start mysqld
Periksa status layanan MySQL
systemctl status mysqld
Pastikan versi MySQL yang terpasang
mysql --version
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 server MySQL yang baru tadi dengan perintah
mysql -u root -p
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
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
mysql
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/
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
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 bawahyum install mysql-community-server
Menjalankan Server MySQL
Jalankan layanan MySQL dengan perintah di bawahsystemctl 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/