Bukan hal yang aneh untuk meng-host database dan server web pada mesin lokal yang sama. Tetapi kadang kita membutuhkan server terhubung dengan database di server yang lain.
Server database yang terpisah memiliki beberapa kelebihan, antara lain dapat meningkatkan keamanan, kinerja server dapat lebih maksimal dan sangat memungkinkan akan menambah kecepatan dalam mengakses web.
Berikut salah satu cara untuk mengaktifkan remote connection ke MySQL database
Syarat agar bisa terkoneksi :
- akses ke server
- akses ke MySQL server
- root privileges di local dan remote server
MySQL Server Remote Connection
allow akses ke remote MySQL sever dengan 3 langkah :
- edit file MySQL config
- configure firewall
- connect ke remote MySQL server
Langkah 1 : Edit file MySQL config
- Akses mysqld.cnf
gunakan text editor untuk membuka file mysqld.cnf. contoh berikut menggunakan nanto text editor di ubuntu. Ketik command berikut di command-line untuk akses ke file konfigurasi MySQL server
sudo nano /etc/mysql/mysql.conf.d/mysql.cnf
lokasi file bisa berbeda terhanting dari OS atau versi yang digunakan. Apabila dengan comman diatas, file tidak ditemukan, lokasi file bisa dicari menggunakan perintah find - ganti Bind-Address IP
setelah membuka configurasi file MySQL server, scroll kebawah dan cari bind-address, dan ganti IP Address nya. default IP adalah 127.0.0.1
IP tersebut melimit MySQL connection hanya ke local server
Ganti IP tersebut dengan IP server yang akan mengakses MySQL.Sebagai contoj, jika bind MySQL diisikan IP 0.0.0.0, maka semua server dapat mengakses ke server MySQL tersebut.
Setelah diganti, simpan dan keluar - restart service MySQL
setelah file di rubah, agar bisa berfungis, service MySQL harus di restart
sudo systemctl restart mysql
setelah edit file, langkah selanjutnya adalah setup MySQL Port
Langkah 2 : Set Firewall untuk Allow Remote MySQL Connection
saat membuka file mysql.cnf, cek port yang digunakan. settingan default :
port = 3306
ada beberapa cara untuk allow port di server.
- UFW (Uncomplicated Firewall)
UFW adalah firewall bawaan Ubuntu. untuk allow port 3306, bisa menggunakan perintah sebagai berikut :
sudo ufw allow from remote_ip_address to any port 3306 - FirewallD
firewalld management tool di CentOS menggunakan zones untuk memilah traffic mana yang akan di allow
Buat zone baru untuk set aturan traffic MySQL server. Untuk contoh, kita menamakan zone mysqlrule dan IP address yang akan mengakses server adalah 123.456.789.012
sudo firewall-cmd –new-zone=mysqlrule –permanent
sudo firewall-cmd –reload
sudo firewall-cmd –permanent –zone=mysqlrule –add-source=123.456.789.012
sudo firewall-cmd –permanent –zone=mysqlrule –add-port=3306/tcp
sudo firewall-cmd –reload - iptables
kebanyakan OS Linux menyediakan iptables utility. untuk allow port 3306, kita bisa menggunakan perintah :
sudo iptables -A INPUT -p tcp –dport 3306 -j ACCEPT
untuk melimit akses dengan spesifik IP address, misal port 3306 bisa diakses dengan IP 123.456.789.012 bisa menggunakan perintah :
sudo iptables -A INPUT -p tcp -s 123.456.789.012 –dport 3306 -j ACCEPT
untuk menyimpan perubahan rule iptables, maka jalankan perintah sebagai berikut :
untuk ubuntu :
sudo netfilter-persistent save
sudo netfilter-persistent reload
untuk CentOS :
service iptables save
Langkah 3 : connect ke Remote MySQL Server
Remote server sekarang sudah siap. Gunakan perintah berikut untuk terhubung dengan remote MySQL server :
mysql -u username -h mysql_server_ip -p
-u username adalah username MySQL server
-h mysql_server_ip adalah IP/hostname MySQL server
-p adalah perintah untuk memasukkan password MySQL Server
Apabila berhasil, maka akan ada output seperti :
connection to mysql_server_ip 3306 port [tcp/mysql] succeeded!
Bagaimana memberikan akses ke database baru MySQL ?
Jika belum mempunyai database, kamu dapat create database dengan perintah seperti berikut :
CREATE DATABASE ‘namaDB’;
untuk memberikan akses user ke spesifik database :
GRANT ALL PRIVILEGES ON namaDB.* TO user@’123.456.789.012′ IDENTIFIED BY ‘password’;
nama database, username, IP remote dan password disesuaikan
Bagaimana memberikan akses ke database yang sudah ada?
untuk memberikan akses kedatabase bisa menggunakan perintah :
update db set HOST=’123.456.789.012′ where DB=’namaDB’;
update user ser HOST=’123.456.789.012′ where user=’user’;
user sekarang bisa akses ke namaDB dari ip 123.456.789.012