Daftar isi:
MySQL Server Remote Access
Anda perlu menjalankan perintah berikut yang akan memungkinkan koneksi remote ke server mysql.
Langkah # 1: Login menggunakan SSH (jika server berada di luar data center Anda)
Pertama, masuk lewat SSH ke remote MySQL database server. Anda mungkin perlu untuk login ke server MySQL Anda sebagai root user:
ssh user@server1.cyberciti.biz
### login as the root using su or sudo ##
su
#sudo -s
atau langsung login sebagai user root:
ssh root@server1.domain.com
Langkah # 2: Edit file my.cnf
Setelah terhubung Anda perlu mengedit konfigurasi MySQL file server my.cnf menggunakan editor teks seperti vi:
- Jika Anda menggunakan Debian Linux terletak di lokasi /etc/mysql/my.cnf.
- Jika Anda menggunakan Red Hat Linux/Fedora/Centos Linux terletak di lokasi /etc/my.cnf.
- Jika Anda menggunakan FreeBSD Anda perlu membuat sebuah file pada /var/db/mysql/my.cnf.
Mengedit /etc/my.cnf:
# vi /etc/my.cnf
Langkah #3: Setelah file dibuka, cari baris yang berbunyi sebagai berikut:
[mysqld]
Pastikan baris skip-networking adalah komentar (atau menghapus baris) dan tambahkan baris berikut
bind-address=SERVER-IP-ANDA
Sebagai contoh, jika server IP MySQL Anda adalah 65.55.55.2 maka seluruh blok harus terlihat seperti sebagai berikut:
[mysqld]
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
language = /usr/share/mysql/English
bind-address = 65.55.55.2
# skip-networking
....
..
....
Dimana,
- bind-address: alamat IP untuk mengikat.
- skip-networking: Jangan perhatikan koneksi TCP/IP. Semua interaksi dengan mysqld harus dilakukan melalui soket Unix. Pilihan ini sangat dianjurkan untuk sistem di mana hanya permintaan lokal diperbolehkan. Karena Anda perlu untuk memungkinkan koneksi remote baris ini harus dihapus dari my.cnf atau meletakkannya dalam script.
Langkah #4: Simpan dan Tutup file
Jika Anda menggunakan Debian / Ubuntu Linux, ketik perintah berikut untuk me-restart server mysql:
# /etc/init.d/mysql restart
Jika Anda menggunakan RHEL / CentOS / Fedora / Scientific Linux, ketik perintah berikut untuk me-restart server mysql:
# /etc/init.d/mysqld restart
Jika Anda menggunakan FreeBSD, ketik perintah berikut untuk me-restart server mysql:
# /usr/local/etc/rc.d/mysql-server stop
# /usr/local/etc/rc.d/mysql-server start
atau
# /usr/local/etc/rc.d/mysql-server restart
Langkah #5: Grant access ke alamat IP
Terhubung ke server mysql:
$ mysql -u root -p mysql
Memberikan akses ke database baru
Jika Anda ingin menambahkan database baru yang disebut foo untuk user bar dan remote IP 202.54.10.20 maka Anda perlu mengetik perintah berikut pada prompt mysql>:
mysql> CREATE DATABASE foo;
mysql> GRANT ALL ON foo.* TO bar@'202.54.10.20' IDENTIFIED BY 'PASSWORD';
Bagaimana cara Memberikan Akses Sebuah database yang ada?
Mari kita berasumsi bahwa Anda selalu membuat koneksi dari remote IP disebut 202.54.10.20 untuk database yang disebut webdb untuk pengguna webadmin, Untuk memberikan akses ke alamat IP ini ketik perintah berikut Pada prompt mysql> untuk database yang sudah ada, masukkan:
mysql> update db set Host='202.54.10.20' where Db='webdb';
mysql> update user set Host='202.54.10.20' where user='webadmin';Langkah # 6: Keluar dari MySQL
Perintah exit Type logout mysql:
mysql> exit
Langkah # 7: Buka port 3306
Anda perlu membuka port TCP 3306 menggunakan iptables atau BSD pf firewall.
Contoh iptables untuk membuka Linux iptables firewall
/sbin/iptables -A INPUT -i eth0 -p tcp --destination-port 3306 -j ACCEPT
ATAU hanya mengijinkan koneksi remote dari server web Anda yang berada di 10.5.1.3:
/sbin/iptables -A INPUT -i eth0 -s 10.5.1.3 -p tcp --destination-port 3306 -j ACCEPT
ATAU hanya mengijinkan koneksi remote dari Anda lan subnet 192.168.1.0/24:
/sbin/iptables -A INPUT -i eth0 -s 192.168.1.0/24 -p tcp --destination-port 3306 -j ACCEPT
Akhirnya, simpanlah rules (perintah spesifik RHEL/CentOS):
# service iptables save
Contoh FreeBSD / OpenBSD / NetBSD pf firewall rule (/etc/pf.conf)
Gunakan perintah berikut untuk membuka port # 3306 pada sistem berbasis BSD:
pass in on $ext_if proto tcp from any to any port 3306
ATAU hanya mengijinkan akses dari server web Anda berada di 10.5.1.3:
pass in on $ext_if proto tcp from 10.5.1.3 to any port 3306 flags S/SA synproxy state
Langkah #8: Uji coba
Dari sistem remote atau desktop Anda ketik perintah berikut:
$ mysql -u webadmin –h 65.55.55.2 –p
Dimana,
- u webadmin: webadmin adalah username MySQL
- IP h atau hostname: 65.55.55.2 adalah alamat server MySQL IP atau hostname (FQDN)
- -p: Konfirmasi password
$ echo X | telnet -e X 65.55.55.2 3306
ATAU
$ nc -z -w1 65.55.55.2 3306
Contoh Output:
Connection to 65.55.55.2 3306 port [tcp/mysql] succeeded!