03
Feb 13

simplefullbackup, script sederhana remote backup file dan database

Ini adalah script sederhana untuk backup file anda, baik yang ada di server, maupun di komputer biasa. Bisa berjalan di linux, sudah saya tes, dan seharusnya juga berjalan di mac dengan beberapa perubahan di path log.
Jalankan script ini dengan cron untuk mengatur rentan waktu backup sesuai kebutuhan anda. Script ini akan membackup semua database yang ada di server dan membackup file di folder yang sudah anda tentukan. Setelah dibackup dan dibuat archive (tar.gz), maka file akan diupload ke FTP server yang bisa anda tentukan di awal atau dengan mengedit file config.

Script ini gratis, silahkan download script ini dan modifikasi sesuai kebutuhan anda, download disini http://pastebin.com/tk53rhLe atau disini fullbackup


31
Jan 13

Mekanisme Failover dan Load Balanding menggunakan DNS – pros and cons

DNS sejatinya adalah sebuah teknologi “addressing” yang merupakan sebuah sistem untuk menterjemahkan sebuah namespace atau domain menjadi alamat IP. Namun ada beberapa yang berpendapat bahwa DNS juga bisa dimanfaatkan sebagai load balancer bahkan sebagai failover. Mekanisme load balancing bisa dilakukan di berbagai level, dimulai dari level DNS, level BGP, level infrastruktur datacenter, level server, bahkan level aplikasi. Untuk load balancing dengan DNS memang cara yang paling sederhana namun efektif untuk membagi load traffic.

Google saat ini juga menggunakan DNS sebagai load balancer menggunakan metode DNS round-robin. Cara itu terbukti ampuh untuk membagi beban traffic raksasa ke beberapa cluster yang dimiliki google. Namun bisa dipastikan, load balancing di google tidak hanya di level DNS, tetapi juga terdapat mekanisme load balancing di level-level lain. Bukan hanya google, situs besar seperti twitter, yahoo, path juga menggunakan mekanisme DNS load balancing.

Bagaimana dengan failover?

Sama dengan load balancing, failover juga bisa dilakukan di berbagai level, dimulai dari level DNS, level BGP, level infrastruktur internal datacenter, level server, hingga level aplikasi.

DNS round-robin sangat efektif untuk menambah kapasitas load sistem dengan cara mendistribusikan load access ke beberapa cluster/server. Namun, penggunaan DNS round-robin tidak direkomendasikan jika digunakan untuk menghindari SPOF (Single Point of Failure). Bisa, namun mempunyai beberapa kelemahan.

Layanan DNS failover banyak disediakan oleh beberapa vendor atau bisa anda buat sendiri, tetapi untuk penggunaan secara massive sebaiknya menghindari penggunakan DNS sebagai failover. Kenapa?

1. Mekanisme DNS failover tidak bisa mengalihkan traffic dari server utama ke server failover secara langsung.
Dalam DNS ada value yang disebut TTL, TTL merupakan waktu “lifespan” record DNS yang disimpan di komputer client. Dalam komputer kita, saat kita mengakses sebuah alamat domain, saat itu juga kita akan mendapatkan data IP server domain tersebut, data tersebut akan disimpan di komputer kita dan akan di-refresh setelah jangka waktu TTL untuk domain tersebut habis. Proses ini juga sering disebut “DNS caching”.

Studi kasus :
Domain cobasaja.com mempunyai alamat server (A record) dipointing ke server dengan IP 1.2.3.4 dan mempunyai Server Failover dengan IP 1.2.3.5 dan mempunyai TTL 300.

Saat server 1.2.3.4 down, alamat server (A record) web cobasaja.com akan di-repointing ke server failover dengan IP 1.2.3.5. Apa yang terjadi dengan komputer client yang mengakses domain tersebut? Seharusnya jika menggunakan failover, akses akan langsung dialihkan ke server 1.2.3.5, namun hal itu tidak akan terjadi secepat itu jika menggunakan load balancing level DNS. Walaupun alamat server sudah di-repointing ke alamat IP server failover 1.2.3.5, client tetap belum bisa mengakses cobasaja.com. Kenapa? Karena komputer client menyimpan alamat IP cobasaja.com adalah 1.2.3.4 selama 300 detik (sesuai TTL). Jadi setelah waktu 300 detik, client baru akan me-refresh alamat IP domain cobasaja.com menjadi 1.2.3.5. Setelah itu client bisa membukan kembali alamat cobasaja.com.

2. Setiap browser juga mempunyai mekanisme DNS Caching, itu akan memperlambat proses resolve IP failover.
TTL value dalam DNS (A record) digunakan untuk caching DNS record di sistem operasi, selain itu sebenarnya browser juga mempunyai mekanisme DNS caching sendiri. Memang caching di browser mempunyai keuntungan yaitu menghemat proses “looking up” sebuah alamat, namun menjadi kendala untuk web yang menggunakan mekanisme DNS failover. Pada tabel dibawah ini dapat dilihat berapa waktu standar browser melakukan caching terhadap record DNS.

8ad6a417-70df-41aa-a15b-b5d725226376
source : http://dyn.com/web-browser-dns-caching-bad-thing/

Pada tabel diatas terlihat bahwa setiap browser pasti mempunyai metode caching dengan “lifespan” yang berbeda-beda. Bahkan sebagian besar browser yang harus di “exit” agar perubahan DNS record di server DNS bisa terlihat efeknya di browser.

Jika tetap menggunakan DNS sebagai penerapan mekanisme failover,  ada sebuah cara untuk meminimalkan downtime (tidak bisa mengakses web) di sisi client. Caranya adalah dengan mengecilkan value TTL pada DNS record, dengan cara tersebut client akan semakin cepat resolve saat server utama down dan A record dipindah ke server failover. Seperti yang dilakukan oleh google.com dengan menjadikan value TTL A record 300 detik, twitter.com dengan value TTL A record 30 detik, dan path.com dengan value TTL A record 251 detik. Namun mekanisme ini akan membuat request DNS dari client ke server manjadi lebih besar, jika traffic besar, pasti akan membuat load DNS server menjadi lebih tinggi.

Kesimpulan :
DNS sebenarnya bisa digunakan sebagai salah satu alternatif load balancing dan failover, namun memiliki beberapa kelemahan, kelemahan terasa apabila DNS digunakan untuk menerapkan mekanisme failover antar server, tetapi tidak menajdi masalah jika DNS digunakan sebagai penerapan mekanisme load balance. Masalah DNS failover ada pada TTL dan mekanisme cache di browser yang akan menghambat resolve DNS ke server failover saat server utama down. Jika ingin menerapkan mekanisme failover sebaiknya menggunakan failover di level BGP, infrastruktur datacenter, server atau level aplikasi. Failover di level tersebut lebih minimal downtime sehingga client seperti tidak merasakan saat server utama mengalami masalah dan sistem sebenarnya sudah berpindah ke server failover.


01
Jan 13

jrBackup : Simple Python MySQL Automatic Database Backup

Aplikasi sederhana, berguna untuk melakukan backup database mysql secara otomatis. Menggunakan duble-fork magic daemon yang diulas oalh Stevens dalam bukunya “Advanced Programming in the UNIX Environment”, auto generate config file menggunakan configparser .

Sudah dicoba di OS linux, belum dicoba di mac atau unix. Mohon maaf jika banyak kesalahan coding, maklum hanya dicoding dalam waktu bandung bondowoso atau sehari semalam, masih taraf belajar dan sangat menerima masukan :) Jika anda ingin lebih jelas membaca source codenya, silahkan buka pastebin saya di http://pastebin.com/KjMZCsEK atau disini jrBackup.py. Terima Kasih


26
Jan 12

Ubuntu Mirror Repository Dengan Rsync

Suatu hari saya ingin membuat repository local sendiri dikarenakan ada banyak mesin ubuntu yang saya gunakan dan tidak praktis rasanya kalau harus menunggu donwload program yang saya gunakan via internet setiap melakukan instalasi. Internet yang saya gunakan memang tidak cepat sehingga membikin repot saat harus menginstall program. Sementara itu, koneksi di kampus sangat cepat yang bisa saya manfaatkan untuk membuat mirror repository.

Saya berkeinginan membuat server repository local agar saat saya dirumah tidah harus mendownload kembali via internet, sehingga linux saya yang lain tinggal hanya mendownload dari laptop saya yang sudah saya sulap menjadi sebuah repository. Untuk membuar repository mirror, cara-caranya adalah seperti dibawah ini :

1. Install aplikasi debmirror

apt-get install debmirror

2. Membuat direktori yang menampung file-file repository

mkdir -p /mirror/ubuntu

3. Setting permission folder /mirror/ubuntu

sudo chown -R anjarwebid:anjarwebid /mirror/ubuntu
sudo chmod -R 771 /mirror/ubuntu

4. Konfigurasi keyring

Buatlah folder yang akan menampung keyring

mkdir /home/anjarwebid/mirrorkeyring

jalankan command dibawah ini untuk import keyring

gpg –no-default-keyring –keyring /home/anjarwebid/mirrorkeyring/trustedkeys.gpg –import /usr/share/keyrings/ubuntu-archive-keyring.gpg

5. Membuat file untuk menjalankan rsync (mirroring) dari server repository yang lain

nano /home/anjarwebid/mirrorbuild.sh

6. Isikan file mirrorbuild.sh dengan code dibawah ini

# ——————————————–
# BEGIN MIRRORBUILD.SH SCRIPT
# ——————————————–

#!/bin/bash

## Setting variables with explanations.

#
# Don’t touch the user’s keyring, have our own instead
#
export GNUPGHOME=/home/anjarwebid/mirrorkeyring

# Arch=         -a      # Architecture.
# For Ubuntu can be i386, amd64, powerpc and/or sparc (sparc support begins with dapper)
#
# Comma separated values
arch=i386,amd64

# Minimum Ubuntu system requires main, restricted
# Section=      -s      # Section
# (One of the following – main/restricted/universe/multiverse).
# You can add extra file with $Section/debian-installer.
# ex: main/debian-installer,universe/debian-installer,multiverse/debian-installer,restricted/debian-installer
section=main,restricted,universe,multiverse

# Release=      -d      # Release of the system
# (Dapper, Edgy, Feisty, Gutsy, Hardy, IntrepidJaunty, Karmic),
# and the -updates and -security ( -backports can be added if desired)
dist=oneiric,oneiric-updates,oneiric-security

# Server=       -h      # Server name,
# minus the protocol and the path at the end
# CHANGE “*” to equal the mirror you want to create your
# mirror from. au. in Australia  ca. in Canada. This can be
# found in your own /etc/apt/sources.list file,
# assuming you have Ubuntu installed.
server=us.archive.ubuntu.com

# Dir=          -r      # Path from the main server,
# so http://my.web.server/$dir, Server dependant
# Lead with a ‘/’ for everything but rsync,
# where we lead with a ‘:’
inPath=:ubuntu

# Proto=        -e      # Protocol to use for transfer
# (http, ftp, hftp, rsync)
# Choose one – http is most usual the service, and the
# service must be availabee on the server you point at.
# NOTE: debmirror uses -aIL –partial by default.
#       However, if you provide the –rsync-options
#       paramter (which we do) then you HAVE to provide
#       it -aIL –partial in addition to whatever You
#       want to add (e.g. –bwlimit) If you don’t
#       debmirror will exit with thousands of files
#       missing.
proto=rsync
rsyncoptions=“-aIL –partial –bwlimit=100″

# Outpath=              # Directory to store the mirror in
# Make this a full path to where you want to mirror the material.
#
outPath=/mirror/ubuntu/

# The –nosource option only downloads debs and not deb-src’s
# The –progress option shows files as they are downloaded
# –source \ in the place of –no-source \ if you want sources also.
# –nocleanup  Do not clean up the local mirror after mirroring
# is complete. Use this option to keep older repository
# Start script
#
debmirror       -a $arch \
–no-source \
-s $section \
-h $server \
-d $dist \
-r $inPath \
–progress \
-e $proto \
–rsync-options=”$rsyncoptions” \
$outPath

# —————————————————–
# END BUILDMIRROR.SH SCRIPT
# —————————————————–

Pada code diatas ada bagian yang saya bold itu pertanda yang harus anda sesuaikan dengan kebutuhan anda.

> arch, anda bisa mensetting arsitektur repository linux yang akan anda buat apakah 32bit, 64bit atau keduanya.

> dist, bisa mengatur versi release apa saja yang akan anda buat

> server, bisa mengatur server mana yang akan di-mirror dengan server anda, untuk server indonesia saya biasa menggunakan server UGM dan UI.

> rsyncoptions , yang paling penting dari konfigurasi ini adalah bwlimit karena akan membatasi berapa bandwidth maksimal yang anda gunakan untuk rsync respository. Defaultnya ada pada 100KBps

Setelah itu save file tersebut

7. Menambahakan permission mirrorbuild.sh agar executable

chmod +x mirrorbuild.sh

8. Melakukan sinkronisasi melalui rsync

./mirrorbuild.sh

Proses ini bisa menjadi sangat lama tergantung koneksi yang anda gunakan. Untuk oneiric saja ukurannya sekitar 50GB, jika koneksi kurang mendukung mungkin bisa menjadi berhari-hari bahkan berminggu-minggu.

9. Setelah proses sinkronisasi selesai, tahap selanjutnya adalah membuat agar file-file yang sudah kita download bisa dibukan via web browser dan dapat digunakan sebagai repository. Caranya adalah dengan menggukanan apache server.

apt-get install apache2

10. Membuat symlink antara /var/www/ubuntu dan /mirror/ubuntu

sudo ln -s /mirror/ubuntu /var/www/ubuntu

11. Untuk melakukan update secara otomatis tambahkan code dibawah ini untuk dimasukkan ke cron

crontab -e

Setelah itu pilih editor nomor 2 (biasanya nano)

dan tambahkan code dibawah ini

* 1 * * 0 /home/anjarwebid/mirrorbuild.sh

pada setting diatas saya melakukan update otomatis setiap minggu, yaitu pada hari minggu jam 1 pagi.

12. Untuk konfigurasi client bisa seperti biasanya, contohnya adalah seperti yang dibawah ini:

deb http://172.16.128.130/ubuntu/ oneiric main restricted universe multiverse
deb http://172.16.128.130/ubuntu/ oneiric-updates main restricted universe multiverse
deb http://172.16.128.130/ubuntu/ oneiric-security main restricted universe multiverse

13. Selesai, silahkan mencoba repo buatan anda sendiri

Terima kasih sudah disempatkan membaca dan mampir ke blog saya, :)


15
Aug 11

Menambahkan Repository Untuk CentOS Server

Bagi sebuah server produktif, sangat diperlukan update-update software versi terbaru untuk menjamin tingkat kompabilitas dan mungkin update security yang berguna mengamankan server.

Ada dua kemungkinan yang terjadi jika server sering diupdate,

  • Kemungkinan pertama aspek positifnya, saat server sering diupdate, akan banyak patch untuk update security tersebut, pastinya itu akan sangat berguna untuk mengamankan server terhadap serangan dari luar.
  • Kemungkinan kedua aspek negatif, saya contohkan untuk drupal dan php, untuk drupal sebelum versi 6.14 pasti akan error saat memakai PHP 5.3x, hal itu bisa menjadi kendala bagi web developer karena aplikasi yang mereka bangun tidak berjalan sempurna di php versi terbaru. Dan satu-satunya jalan adalah mengedit kembali web yang telah dibuat agar bisa compatible dengan php versi terbaru.

Kemungkinan tersebut hendaknya menjadi pertimbangan bagi seorang network administrator dimana harus tetap memadukan antara sisi keamanan dan kompabilitas untuk pemakai server tersebut. Pernah terjadi pada saya, saat itu saya mengupdate php ke versi terbaru (5.3.x) dan ternyata banyak sekali web yang error, dan seperti biasa system administrator bakalan kena marah dari customer, dan akhirnya saya downgrade ke php 5.2.x versi terbaru agar semua web bisa berjalan seperti sebelumnya.

Untuk melakukan upgrade dan download packet-packet yang dipakai oleh server CentOS, dibawah ini saya berikan beberapa contoh instalasi repository yang sering saya pakai.

1. EPEL
Untuk instalasi repository EPEL secara langsung tinggal download intallernya (rpm) dan langsung diinstall maka repository bisa langsung dipakai.

wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
rpm – ivh epel-release-5-4.noarch.rpm

2. RPMForge
Instalasi repository RPMForge dibagi menjadi 2, yaitu untuk sistem operasi 32bit dan 64 bit.

untuk 32bit

wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm

untuk 64bit

wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm

Install DAG GPG key

rpm –import http://apt.sw.be/RPM-GPG-KEY.dag.txt

Install package yang sudah didownload

rpm -ivh rpmforge-release-0.5.2-2.el5.rf.i386.rpm

Untuk mengetahui apakah repo telah terinstall, bisa menggunakan command

yum repolist

Hasilnya nanti akan keluar tampilan sebagai berikut

repo id       repo name                                            status
addons        CentOS-5 – Addons                                    enabled:    0
base          CentOS-5 – Base                                      enabled: 3535
epel          Extra Packages for Enterprise Linux 5 – x86_64       enabled: 6642
extras        CentOS-5 – Extras                                    enabled:  299
updates       CentOS-5 – Updates                                   enabled:  765
repolist: 11241


24
Feb 11

Cara Install PECL Uploadprogress Library di CentOS untuk Drupal

Pada drupal ada library tambahan yang sebaiknya ditambahkan untuk menampilkan proses upload di drupal. Library tersebut dinamakan PECL Uploadprogress. Secara default PHP tidak menyertakan library tersebut, maka harus anda install sendiri. Bagi anda yang memakai share hosting, mungkin anda bisa menghubungi tim support hosting anda agar libarary ini diinstall. Library PECL Uploadprogress digunakan untuk module filefield.

Cara yang digunakan untuk mengistall library ini adalah sebagai berikut:

1. Pastikan phpize sudah terinstall di server anda. Cara untuk mengatahuinya adalah dengan mengetikkan phpize di console. Apabila anda menemukan peringatan seperti ini

[root@bantul uploadprogress-1.0.1]# phpize sh: phpize: command not found ERROR: `phpize’ failed

berarti phpize anda belum diinstall. Jika belum diinstall ketikan perintah dibawah ini untuk menginstallnya :

yum install php-devel

setelah itu ketikkan lagi phpize di console, harusnya keluar peringatan semacam ini:

[root@bantul uploadprogress-1.0.1]# phpize Configuring for: PHP Api Version:         20090626 Zend Module Api No:      20090626 Zend Extension Api No:   220090626

2. Install libary PECL uploadprogress Untuk melakukan instalasi PECL uploadprogress ketikkan console dibawah ini:

pecl install uploadprogress

Setelah anda tekan enter, maka akan keluar banyak teks yang tandanya sedang melakukan instalasi dan compiling. 3. Masukkan ekstensi uploadprogress ke php.ini Setelah keluar tulisan seperti ini dibawah ini di baris terakhir berarti instalasi berhasil

Build process completed successfully Installing ‘/usr/lib/php/modules/uploadprogress.so’ install ok: channel://pecl.php.net/uploadprogress-1.0.1 configuration option “php_ini” is not set to php.ini loca You should add “extension=uploadprogress.so” to php.ini

sekarang tinggal memasukkan extension=uploadprogress.so ke php.ini. File php.ini biasanya ada di /etc/php.ini atau /etc/php5/php.ini. Setelah file php.ini dibuka masukkan tulisan dibawah ini di baris paling bawah dari php.ini

extension=uploadprogress.so

4. Restart service httpd Untuk melihat hasilnya harus restart httpd terlebih dahulu, caranya masukkan perintah dibawah ini :

service http restart

dan apabila sukses akan muncul tulisan seperti ini:

[root@bantul uploadprogress-1.0.1]# service httpd restart

Stopping httpd:                                            [  OK  ]

Starting httpd:                                              [  OK  ]

5. Selesai Lihat hasilnya di halaman status web drupal anda

http://webanda.com/admin/reports/status


23
Feb 11

Cara Backup dan Restore Database MySQL Menggunakan Console

Bagi seorang administrator ataupun developer, backup database merupakan hal yang sangat vital. Pengalaman saya sendiri, saat itu saya pernah kehilangan database dan membuat saya tidak bisa tidur beberapa malam. Belajar dari pengalaman saya, saya mencoba sharing tentang bagaimana membackup sekaligus restore database yang ada di MySQL menjadi file .sql sehingga bisa disimpan ataupun di download.

Untuk cara ini bisa digunakan di windows maupun di linux. Cara yang digunakan untuk membackup dan merestore database adalah sebagai berikut: 1. Membackup semua database MySQL

mysqldump -u useranda -p -A > /folder/anda/hasilbackup.sql

2. Membackup beberapa database

mysqldump -u useranda -p dbsatu dbdua dbtiga > /folder/anda/hasilbackup.sql

3. Membackup satu database

mysqldump -u useranda -p dbsatu > /folder/anda/hasilbackup.sql

4. Membackup tabel tertentu dalam satu database

mysqldump -u useranda -p dbsatu -t namatable > /folder/anda/hasilbackup.sql

5. Merestore file backup ke database

mysql -u useranda -p dbsatu < /folder/anda/hasilbackup.sql

Demikianlan cara untuk membackup dan merestore database, semoga bermanfaat :)


23
Feb 11

Email Otomatis Saat Seseorang Login Menggunakan User Root

Artikel ini sangat simple, namun bagi anda yang mempunyai server tentunya akan sangat berguna untuk mengawasi server anda. Jadi dengan cara ini, setiap kali ada user yang login ke server dengan SSH, webmin dan sejenisnya menggunakan user root , maka sistem akan mengirimkan email otomatis ke alamat email yang telah anda tentukan.

Cara pembuatannya adalah sebagai berikut:

1. Login ke server melalui SSH

Login ke server dapat menggunakan putty ataupun console langsung.

2. Masuk ke folder root

[root@bantul ~]# cd /root

3. Edit file .bash_profile yang ada di folder root

Saat mengedit anda bisa menggunakan vi editor, gui application, atau menggunakan file manager yang ada di webmin contohnya.

4. Tambahkan baris perintah dibawah ini di file

.bash_profile

echo ‘ALERT – Root Shell Access (YourserverName) on:’ `date` `who` | mail -s “Alert: Root Access from `who | cut -d”(” -f2 | cut -d”)” -f1`” [email protected]

- yourservername bisa diganti sesuai nama server anda

[email protected] bisa diganti sesuai alamat email anda

5. Sekian

Setelah disave, maka setiap kali ada user root login, maka email notifikasi akan terkirim otomatis ke email anda.


23
Feb 11

Membuat Remote Access untuk MySQL Database Server via Port 3306

Sangat terasa berbeda saat akan melakukan remote akses ke MySQL server disaat saya menggunakan windows XP dan sekarang menggunakan server CentOS. Saat di Windows XP, remote access dapat langsung dilakukan apabila tau IP MySQL database server dan firewall yang ada di Windows XP dimatikan, tinggal connect, semuanya berjalan dengan normal dan mudah. Namun beda halnya saat saya akan membuat remote access untuk MySQL database server yang ada di CentOS server.

Sebelum bisa connect, maka harus ada sedikit setting yang dilakukan. Langkah-langkah yang harus dilakukan remote access untuk MySQL database server di CentOS server adalah sebagai berikut :

1. Login ke server anda, biasanya via SSH

Untuk login ke server via SSH, bisa menggunakan putty ataupun software sejenis seperti bitvise tunnelier.

2. Edit my.cnf File

  • Jika anda menggunakan Debian Linux file ada di /etc/mysql/my.cnf
  • Jika anda menggunakan Red Hat Linux/Fedora/Centos Linux file ada di at /etc/my.cnf
  • Jika anda menggunakan FreeBSD anda harus membuat sendiri file /var/db/mysql/my.cnf

Setting standarnya adalah sebagai berikut:

[mysqld]
datadir = /var/lib/mysql
socket = /var/lib/mysql/mysql.sock
user=mysql

Agar bisa diremote, maka ditambahkan baris dibawah ini:

bind-address= IP server anda
#skip-networking

Jadi setelah digabung contohnya menjadi seperti ini:

[mysqld]
datadir = /var/lib/mysql
socket = /var/lib/mysql/mysql.sock
user=mysql
bind-address=173.224.215.123
#skip-networking

Setelah itu save file my.cnf dan restart mysql anda
[root@bantul ~]# service mysqld restart  << restart MySQL

3. Buat user yang bisa digunakan untuk dilakukan remote access

[root@bantul ~]# mysql -u root -p    << Login ke mysq anda dan masukkan password root anda.
mysql> create user ‘coba’ identified by ‘anjar’;  << Membuat user ‘coba’ dan passwordnya ‘anjar’
mysql> grant all privileges on *.* to ‘coba’ with grant option; << Memperbolehkan semua hak akses.
mysql> exit  << Keluar dari MySQL
[root@bantul ~]# service mysqld restart  << Restart MySQL

4. Buka Port 3306 (MySQL Database Server)

Untuk bisa diakses dari luar, port 3306 harus dibuka, karena secara default firewall linux akan menutup semua port, kecuali yang diperbolehkan oleh IPTABLES. Untuk membuka port 3306, maka kita akan memasukkan beberapa baris konfigurasi ke IPTABLES. Caranya adalah sebagai berikut:

[root@bantul ~]# /sbin/iptables -A INPUT -i eth0 -p tcp –destination-port 3306 -j ACCEPT  << Memasukkan konfigurasi
[root@bantul ~]# service iptables save  << Menyimpan konfigurasi
[root@bantul ~]# service iptables restart  << Restart iptables

5. Mari kita coba hasilnya melalui CMD di client (windows)

H:\xampp\mysql\bin>mysql -u coba -h 173.224.215.123 -p  << Login ke MySQL server lewat komputer client (Windows) dan akan muncul tampilan seperti ini, jika keluar tulisan seperti itu, berarti anda sudah berhasil meremote database anda.

capture

6. Sekian

Setelah bisa login seperti tampilan diatas, berarti anda sudah berhasil melakukan remote access ke server MySQL anda. Tahap lanjutannya adalah memberikan permission yang sesuai untuk setiap user yang anda gunakan. Misalnya user A hanya bisa mengakses database 1, user B hanya bisa mengakses database 2. Semoga bermanfaat