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 :

  1. akses ke server
  2. akses ke MySQL server
  3. root privileges di local dan remote server

MySQL Server Remote Connection

allow akses ke remote MySQL sever dengan 3 langkah :

  1. edit file MySQL config
  2. configure firewall
  3. connect ke remote MySQL server

Langkah 1 : Edit file MySQL config

  1. 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
  2. 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
  3. 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.

  1. 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
  2. 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

  3. 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