Dapat tugas disuruh install MySQL 5.7 dan PHP 7.1 di CentOS 7, ada sedikit perbedaan karena yang diinstall bukan versi terakhir (latest) dan beberapa hal penting yang perlu didokumentasikan di blog ini

Hal penting yang perlu diperhatikan

Beberapa poin yang perlu diperhatikan sebelum dan setelah instalasi yang berpengaruh pada develop dan production diantaranya :

  • firewall-cmd
  • non-aktifkan selinux. Ketatnya tingkat keamanan CentOS sehingga ada kondisi harus di set ke mode permissive/ disabled. Kalau hanya ingin sementara pakai command setenforce 0 kalau ingin permanent konfigurasi filenya ada di /etc/selinux/config (selengkapnya baca Linuxize dan Cyberciti)
  • timezone. Sesuaikan timezone di file php.ini (baca tecadmin)
  • bind-address di file my.cnf. Pastikan database yang dibuat bisa di remote
  • user mysql jangan pake root (Baca Linuxize : How to Create MySQL Users Accounts and Grant Privileges)

Install PHP 7.1

yum install epel-release yum-utils -y
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum-config-manager --enable remi-php71
yum install php php-cli php-common php-devel php-mssql php-mysql php-pdo php-pear php-pgsql php-xml php-gd php-zip

Install php yang diperlukan, dalam hal ini saya install semua. Sumber Linuxtechi dan tecmint

Install MySQL 5.7

Download MySQL 5.7

yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

Install MySQL 5.7

yum install mysql-server

Atur Firewall

firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --reload

Start service mysqlnya

systemctl start mysqld

Cari password root mysql sementara

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

Lakukan pra konfigurasi

mysql_secure_installation

Berikut pertanyaan yang butuh konfirmasi

Change the password for root ? ((Press y|Y for Yes, any other key for No) : y
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y

Buat Database dan User MySQL

Login dengan user

root mysql -u root -p

Buat database

create database trialdb;
create user 'trialuser'@'%' identified by 'P@ssw0rd';

Password harus sesuai standar keamanan untuk lebih jelas jalankan query berikut SHOW VARIABLES LIKE 'validate_password%';

Mengubah Standar Keamanan Password pada saat membuat user database

Keterangan :

  • LOW Length >= 8 characters.
  • MEDIUM Length >= 8, numeric, mixed case, and special characters.
  • STRONG Length >= 8, numeric, mixed case, special characters and dictionary file.
SET GLOBAL validate_password.policy=LOW;

Atur permission user

User untuk database tertentu

grant all privileges on trialdb.* to 'trialuser'@'%';

User untuk database dan tabel tertentu

grant all privileges on trialdb.trialtable to 'trialuser'@'%';

User untuk hak akses terbatas pada database tertentu

grant select, insert, update on trialdb.* to 'trialuser'@'%';

User untuk semua database

grant all privileges on *.* to 'trialuser'@'%';

Allow MySQL to Remote

Edit file my.cnf

nano /etc/my.cnf

Hilangkan tanda # dan edit perintah

bind-address=0.0.0.0

Restart service MySQL, setelah itu coba remote menggunakan aplikasi MySQL Workbench, DBeaver, atau Navicat.

Referensi instalasi dan konfigurasi MySQL :