Categories: MySQL

Cara setting remote MySQL/MariaDB dengan mudah

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:

  1. Install Apache (optional)
  2. Install PHP (optional)
  3. Install MySQL / MariaDB
  4. Setting my.cnf
  5. Install PHPMyAdmin (optional)
  6. Buat Database
  7. Buat user database
  8. Sambungkan user dengan database beserta hak aksesnya
  9. Buka port MySQL (default 3306) pada firewall / iptables
  10. 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.

Bagikan
rasupe

Recent Posts

CPU usage tinggi pada server

Bismillaahirrohmaanirrohiim... Untuk mendeteksi cpu usage tinggi memang perkara rumit, adakalanya karena codingan bermasalah, akses ke…

2 months ago

Membersihkan log mongodb yang besar

Bismillaahirrohmaanirrohiim... Jika tidak dirawat dan dicek berkala, log mongodb akan semakin membesar. Bahkan sampai menghabiskan…

2 months ago

Cara mengakses gps di HP dengan javascript

Bismillaahirrohmaanirrohiim... Jika kita membuat website yang digunakan untuk memantau lokasi HP client, maka kita memerlukan…

5 months ago

Menghitung jarak dua titik koordinat dengan php dan javascript

Bismillaahirrohmaanirrohiim... Kali ini kita akan mencoba menerapkan rumus trigonometeri dari formula haversine, yang digunakan untuk…

5 months ago

Kemasan cleo botol kecil sering bikin tangan terluka

Bismillaahirrohmaanirrohiim... Disini saya akan berbagi pengalaman tentang susahnya membuka tutup botol cleo kecil ukuran 220ml.…

5 months ago

Solusi InsCek pada meteran PLN

Bismillaahirrohmaanirrohiim... Kali ini saya akan berbagi pengalaman tentang mati lampu yang disebabkan oleh permasalahan arus…

5 months ago