Secure MySQL Database Tunnel

MySQLMySQL adalah salah satu database yang paling banyak digunakan, apalagi saat ini telah merambah pada pemrograman Dot Net. Kebetulan saya saat ini sedang melakukan development application dengan menggunakan .Net dengan MySQL sebagai basis data. Selain dapat menghemat biaya lisensi :p untuk basis data, saya juga dapat memodifikasi aplikasi buatan saya dengan banyak pilihan dan meng-nyelaraskannya dengan sistem basis data yang saya gunakan.

Salah satu kendala yang saya hadapi adalah lambatnya koneksi antara applikasi saya yang dijembatani oleh ADO.NET dengan MySQL, walaupun pada saat melakukan Query kecepatannya sangat tinggi :) . Entah apa yang terjadi pada saat koneksi pertama kali yang dilakukan ADO.NET, tetapi itu sangat menggangu saya, apalagi pembandingnya adalah MsSQL yang bisa dengan cepat membaur dengan applikasi saya.

Setelah cape mencari kesana-kesini dan banyak tanya ke Mbah Google, ternyata gak ada jawaban yang memuaskan, maka saya putuskan untuk lakukan sedikit eksperimen dan jadilah artikel ini ditulis… he he he

Ini berawal dari saat saya mengukur kecepatan koneksi antara konsol MySQL saya (Windows XP) ke server berbasis Linux Ubuntu. Perbandingannya lumayan kecil bila koneksi dilakukan dengan ADO.NET. Tetapi ketika saya lakukan connection dengan terminal di localhost linux, kecepatannya sangat berbeda drastis dan sangat cepat respons-nya. Berarti saya harus memindah server linux ke Windows Local saya. Saya mulai teringat akan pembuatan Tunnel yang biasa saya lakukan untuk secure connection dengan menggunakan port 22 atau SSH. Oke langsung saja kita lakukan…

Yang saya inginkan saat ini adalah:

  1. Koneksi ke basis data (MySQL) dengan kecepatan paling tidak sama dengan koneksi ke MsSQL
  2. Kecepatan total untuk Query data
  3. Keamanan transportasi data
  4. Hubungan yang terus-menerus antara applikasi dengan basis data.

Setting Koneksi Otomatis PUTTY ke Server

  1. Generate SSH Key denagn PUTTY Key Generator
  2. Setelah berhasil di generate, Isi Key Comment dengan isian “has@mysql.machine” dengan catatan isian tersebut dapat diganti.
  3. Simpan Key dengan klik tombol “Save Public Key” dan berinama dengan akhiran .pub
  4. Simpan Key Private dengan klik tombol “Save Private Key” den berinama dengan akhiran .ppk
  5. kita akan punya tampilan kurang lebih seperti ini
  6. ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIB05FSUOl0yqo0PBmiJtJA5eQ
    wJMUMfUWLBTBne06tEZea5gBpJG4r0zBMsK37WOREwmlIHNJ
    eeKtNgXo6b++EGz143CYGgtnIuPrtLfqJPSpEQ1MmJf58MWUd4
    M635SeSoc3NpYsNm+tJhWSESMDUCm6nqKsauiqClJg4A36oj
    xw== has@mysql.machine

  7. Login sebagai root ke server box MySQL
  8. masuk ke direktori ssh dengan ketikan perintah berikut dan edit file authorized_keys2. Bila terdapat isi di dalamnya jangan di timpa, tapi letakkan ssh-rsa pada akhir isi.
  9. cd /
    cd ~/.ssh
    sudo nano authorized_keys2

  10. Setelah selesai dan disimpan, kembali ke Windows Box kita
  11. Eksekusi PUTTY.exe dan kita mulai lakukan setting tunnel dan auto login
  12. Pada Catagory Session, isi host dengan alamat server kita plus port ssh yang terbuka.
  13. Pada Catagori Connection – Data isikan Auto-Login Username dengan Username ssh yang kita pakai untuk masuk ke server
  14. Pada Catagori Connection – SSH – Auth Private Key File For Autenthication isikan dengan File Private Key yang telah kita buat.
  15. Pada Catagori Connection – SSH – Tunnel isi Source Port dengan Port MySQL pada server default-nya 3306 dan isi destination dengan myhost:port contohnya 127.0.0.1:3306 dan jangan lupa di add yach :)
  16. kemudian lakukan login dan……. tatattttttt….. anda telah membuka tunnel secara otomatis tanpa ditanya username dan password. jangan lupa simpan sessionnya sehingga anda tak perlu lakukan langkah ini berulang-ulang…. cape dech……. :p

    SETTING MYSQL DATABASE

  17. Kalo kita dapat lakukan koneksi ke MySQL Server dari konsol kita dengan perintah mysql -uroot -p -h 192.168.223.1 kita mendapat akses root pada jaringan. Itu ternyata tidak cukup, karena kita akan lakukan akses jaringan dengan ssh yang di forward ke port 3306 pada box kita. Jadi pada konsepnya kita lakukan koneksi jaringan seakan-akan server ada di box kita dengan perintah mysql -uroot -p
  18. Pada beberapa distro linux seperti Debian dan variant-nya termasuk Ubuntu box milik saya, dibutuhkan setting kusu (ceilahhhh kusus nih…) dengan memberikan tanda pagar (#) pada bind-address.
  19. Restart Mysql database.
  20. lakukan login lewat box anda mysql -uroot -p -h localhost atau mysql -uroot -p
  21. Selesai…. piuffffffff kalo masih gagak dan tampil error koneksi atau pemutusan koneksi oleh mysql, cek setting pada my.cnf atau pada tunnel di Putty.

Leave a Reply