Mengaktifkan Akses Remote MySQL Database Server

Secara default akses MySQL hanya diijinkan diakses dari server dimana MySQL tersebut diinstall (localhost). Nah, adakalanya kita ingin mengaktifkan akses remote MySQL agar database di server tersebut bisa diakses atau digunakan di server lain.
Kalau alasannya ada banyak. Antara lain server tersebut memang dikhususkan sebagai server yang mengelola database, sementara webserver diletakkan di server lain. Atau bisa juga karena webserver menggunakan load-balancing sehingga membutuhkan satu database yang sama namun dapat diakses dari dua server berbeda.
Oke langsung saja ke tutorial.
Pertama, edit konfigurasi MySQL nya.
Di Ubuntu dan Debian :
nano /etc/mysql/my.cnf
Di CentOS / RedHat :
nano /etc/my.cnf
Lalu cari
[mysqld]
Selanjutnya kalian tambahkan comment ( # ) pada skip-networking.
Lalu tambahkan bind-address= ip_address_server
Contohnya seperti ini :
[mysqld]
#
# * Basic Settings
#
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
datadir         = /var/lib/mysql
tmpdir          = /tmp
lc-messages-dir = /usr/share/mysql
bind-address    = 127.0.0.1
bind-address    = 192.168.1.29
#skip-external-locking
#
# Instead of skip-networking the default is now to listen only on

Silahkan sesuaikan sendiri ya. Selanjutnya restart MySQL service.
service mysql restart
Selanjutnya adalah membuat user database yang dapat diakses dari server lain (user remote database).
CREATE USER 'remoteuser'@'%' IDENTIFIED BY 'passwordremote';
GRANT ALL ON databaseku.* TO 'remoteuser'@'%';
Nah, jika pengaturannya seperti diatas, remote mysql bisa dilakukan dari dari mana saja. Artinya kalau tiba-tiba database kita bocor (leaked by hacker), dia bisa melakukan remote database dari komputernya.

Disini kita akan meng-allow database hanya boleh diakses dari ip webserver nya saja.
Anggap saja disini ip mysql-server adalah 192.168.1.29 dan ip webserver adalah 192.168.1.30
masukkan rule berikut ke iptables :
iptables -I INPUT 8 -p tcp -s 192.168.1.30 --sport 1024:65535 -d 192.168.1.29 --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -s 192.168.1.29 --sport 3306 -d 192.168.1.30 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
Selanjutnya di state terakhir, drop koneksi keluar maupun masuk.
-A INPUT -j DROP
-A OUTPUT -j DROP
Oke sekarang kita coba test login database dari komputer.
mysql remoteuser -h 192.168.1.29 -p
Pasti tidak akan tersambung karena di block.
tapi kalo remote login dilakukan dari ip webserver (yang dalam contoh ini adalah 192.168.1.30), makan akan tersambung ke database.

Baiklah sekian tutorial kali ini, semoga bermanfaat. Jika ada yang kurang jelas silahkan ditanyakan.

Posting Komentar untuk "Mengaktifkan Akses Remote MySQL Database Server"