Bismillaahirrohmaanirrohiim…
Suatu ketika kita ingin menginstall server khusus database, di mana script program kita letakkan di lokasi server yang berbeda, bahkan di localhost sekalipun.
Kegunaan remote mysql / mariadb adalah kita dapat melakukan maintain database di server yang terpisah, disamping itu server database tersebut juga dapat diakses oleh beberapa program sekaligus dari beberapa server yang berbeda.
Di sini, saya akan membuat tutorial tentang bagaimana cara setting remote MySQL/MariaDB dengan mudah. Kita menggunakan server centos untuk mencobanya.
Langkah-langkahnya adalah sebagai berikut:
- Install Apache (optional)
- Install PHP (optional)
- Install MySQL / MariaDB
- Setting my.cnf
- Install PHPMyAdmin (optional)
- Buat Database
- Buat user database
- Sambungkan user dengan database beserta hak aksesnya
- Buka port MySQL (default 3306) pada firewall / iptables
- Testing akses via mysqlclient di localhost / server lain
Langkah 1: Install Apache web server
Pada dasarnya disini apache nanti digunakan untuk mengakses PHPMyAdmin saja, jika tidak memerlukannya atau sudah ada webserver yang terinstall, step ini bisa dilewati.
untuk menginstall apache web server, jalankan perintah ini:
yum install httpd
setelah selesai, jalankan apache dengan perintah:
systemctl start httpd
agar service autorun saat direboot, jalankan:
systemctl enable httpd.service
kemudian pastikan bahwa port HTTP 80 dan HTTPS 443 sudah terbuka di firewall. Jika belum tambahkan dengan perintah:
firewall-cmd --permanent --zone=public --add-service=http firewall-cmd --permanent --zone=public --add-service=https firewall-cmd --reload
Untuk mencoba instalasinya, silahkan akses via browser:
http://serverIP atau http://123.123.123.123
Langkah 2: Install PHP
jika tidak memerlukan php atau sudah ada sebelumnya, lewati step ini.
Kita akan menginstall versi PHP 7.4, untuk menginstallnya, jalankan perintah:
yum install epel-release yum-utils -y yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y yum-config-manager --enable remi-php74 yum install php php-common php-mcrypt php-cli php-gd php-curl php-mysql -y
untuk mencoba php sudah jalan atau belum, buat file phpinfo.php di root folder htmlnya (/var/www/html) dengan isi:
<?php phpinfo();
lalu buka browser dan jalankan http://123.123.123.123/phpinfo.php
Step 3: Install MySQL / MariaDB
kita akan menginstall mariaDB versi terbaru, download repo dari web resminya, dengan cara:
sh <(curl https://downloads.mariadb.com/MariaDB/mariadb_repo_setup || wget -O - https://downloads.mariadb.com/MariaDB/mariadb_repo_setup)
kemudian jalankan repo tersebut:
//ubuntu apt install mariadb-server mariadb-client //centos 7 yum install mariadb-server mariadb-client //centos 8 dnf install mariadb-server mariadb-client
jalankan mariadb / mysql
systemctl start mariadb
jalankan mysql / mariadb saat boot
systemctl enable mariadb
Secara default install mysql membuat user anonimous, yang bisa login tanpa membuat user, kemudian membuat database test, dimana database tersebut dapat diakses semua user. Jadi kita perlu menghapus user anonimous dan database test tersebut, membuat root password, dll.
buat installasinya menjadi secure:
mysql_secure_installation
jawaban pertanyaan sebagai berikut:
Switch to unix_socket authentication [Y/n] Y //jika ada pertanyaan ganti password root Change the root password? [Y/n] Y New password: Type new root password Re-enter new password: Re-enter new root password //hapus user anonim Remove anonymous users? [Y/n] Y //jangan izinkan login root dari remot Disallow root login remotely? [Y/n] Y //hapus db test Remove test database and access to it? [Y/n] Y //restart privilage Reload privilege tables now? [Y/n] Y
setelah semua sukses, lanjut ke tahap selanjutnya.
Langkah 4: setting my.cnf
Edit /etc/my.cnf atau lokasi config mysql yang berisi tentang bind-address, misal di /etc/my.cnf.d/server.cnf
Cari dan edit baris berikut:
//isi ip address yang diizinkan untuk remote mysql bind-address=1.1.1.1 //atau jika ingin diakses dari semua server isi ip 0.0.0.0 bind-address=0.0.0.0
Langkah 5: install PHPMyAdmin
jika tidak memerlukannya, silahkan lanjut ke langkah berikutnya.
cara install phpmyadmin, ketikkan:
yum install epel-release yum install phpmyadmin
Langkah 6: Buat database
database ini yang nanti kita remote dari server lain.
cara membuatnya, kita perlu login ke mysql dulu, ketikkan:
mysql -u root -p //lalu masukkan password kemudian enter
buat database dengan perintah:
create database dbsatu;
Langkah 7: Buat user database
buat user usersatu untuk database dbsatu dengan password pass123:
CREATE USER 'usersatu'@'localhost' IDENTIFIED BY 'pass123';
Langkah 8: Sambungkan user dengan database beserta hak aksesnya
berikan hak akses usersatu ke database dbsatu:
//dbsatu dapat diakses dari server 123.123.123.123 saja GRANT ALL ON dbsatu.* to 'usersatu'@'123.123.123.123' IDENTIFIED BY 'pass123' WITH GRANT OPTION; //dpt diremote dari server 123.123.123.123 saja dan dapat diakses semua DB GRANT ALL ON *.* to 'usersatu'@'123.123.123.123' IDENTIFIED BY 'pass123' WITH GRANT OPTION; //dapat diakses dari semua server, kita gunakan yang ini GRANT ALL ON dbsatu.* to 'usersatu'@'%' IDENTIFIED BY 'pass123' WITH GRANT OPTION;
Langkah 9: Buka port MySQL (default 3306) pada firewall / iptables
Agar port mysql dapat diakses dari luar, port 3306 harus dibuka. Caranya:
Cara 1:
iptables -A INPUT -i eth0 -p tcp --destination-port 3306 -j ACCEPT iptables -A INPUT -i eth0 -s 1.1.1.1 -p tcp --destination-port 3306 -j ACCEPT => satu ip saja yg boleh service iptables save
Cara 2:
ufw allow from 123.123.123.123 to any port 3306 => ijinkan port mysql diakses dari 123.123.123.123 ufw allow 3306 => ijinkan port mysql diakses dari semua server ufw reload //kalo ufw belum ada bisa diinstall yum install -y epel-release yum install -y ufw
Cara 3:
firewall-cmd --permanent --zone=trusted --add-source=192.0.2.10/32 => utk port 192.0.2.10 sampai 32 firewall-cmd --permanent --zone=trusted --add-port=3306/tcp firewall-cmd --reload
Cara 4: temporary open bukan permanent
firewall-cmd --add-port=3306/tcp; firewall-cmd --remove-port=3306/tcp; => remove port firewall-cmd --reload; => remove port yg temporary
Atau langsung dipanel ditambahkan, tapi perlu di restart / stop dan start.
Langkah 10: Testing akses via mysqlclient di localhost / server lain
Nah sekarang tinggal mencoba mengakses mysql dari server lain, kita bisa menggunakan komputer lokal yang sudah terinstall mysql client.
pertama buka CMD, kemudian cd xampp/mysql/bin
setelah masuk jendela mysql, kita ketikkan perintah:
mysql -h namahost -P portmysql -u userdatabase -p passdatabase --database=namadatabase //mudahnya jika server 123.123.123.123 dengan perintah sederhana mysql -h 123.123.123.123 -u usersatu -p //masukkan password //setelah masuk, cek database show databases; //pilih database dbsatu use dbsatu; //jalankan perintah sql lainnya yang diinginkan
Demikianlah cara setting remote MySQL / MariaDB, perlu diketahui bahwasannya kekurangan remote mySQL ini adalah, jika server databasenya diakses lambat, maka aplikasi kita juga akan lambat. Jadi pastikan server MySQL dapat diakses dan mempunyai kecepatan yang bagus.
Remote mysql ini juga bisa digunakan untuk wordpress, drupal, joomla, yii framework, laravel, dsb. Yang mana script diinstall diserver A, kemudian database mySQL nya di server yang lainnya.
Semoga bermanfaat.