MySQL Tutorial : How to Access MySQL Database Inside Vagrant from Machine

Halo..haloo, ini postingan darurat di jam-jam subuh, haha. Terakhir saya nulis di blog ini sekitaran bulan juli kemarin, ini udah mau akhir tahun baru nulis lagi :p. Maklum, saya lagi sibuk di dunia nyata, mencoba untuk menjadi manusia yang bener-bener manusia. Kebetulan di tempat kerja saya yang baru kemarin pake stack teknologi yang baru bagi saya, tepatnya pakai GoLang. Gak usah saya jelasin itu makanan apa, monggo teman-teman googling ajaahh.

Ketika akan memulai project, seperti biasa, siapkan environment nya dulu. Disini saya masih pake vagrant, udah jadul sih sebenarnya, teman-teman yang lain udah pake docker malahan untuk virtualisasinya -,-. Masalah mulai muncul disini, ketika akan mengakses database yang ada di dalam vagrant dari machine. Sebelumnya saya sudah pernah tulis tentang mengakses database yang ada di dalam vagrant dengan menggunakan mysql workbench. Kali ini kasusnya lain, langsung tembak pake tcp dan selalu gagal mengakses database. Googling kemana-mana, tanya ke temen kantor, juga belum menemukan titik terang.

Akhirnya nemu solusi, dengan cara memberikan akses (permission) ke IP machine untuk mengakses langsung database yang ada di dalam vagrant dan membuka akses forwarded port di Vagrantfile. Langsung aja deh ke step by step nya :

1. Buka Vagrantfile, cari line ini :

config.vm.network :forwarded_port, guest: 80, host: 8080

Ubah menjadi :

config.vm.network :forwarded_port, guest: 3306, host: 8306

Maksudnya disini, nanti kita akan mengakses database dari port 3306

2. Masuk ke vagrant via vagrant ssh

3. Ubah konfigurasi bind address yang ada di dalam file my.cnf

sudo nano /etc/mysql/my.cnf

Cari line yang berisikan “bind-address = 127.0.0.1“, ubah menjadi “bind-address = 0.0.0.0

4. Restart mysql

sudo service mysql restart

5. Masuk ke mysql console, sesuaikan user dan password dengan konfigurasi masing-masing

mysql -u ROOT_USER -p

6. Berikan hak akses kepada IP machine

GRANT ALL PRIVILEGES ON *.* TO ROOT_USER@IP_MACHINE IDENTIFIED BY ‘YOUR_CUSTOM_PASSWORD’ WITH GRANT OPTION;

Disini saya contohkan,ROOT_USER : root, IP_MACHINE : 192.168.34.1, YOUR_CUSTOM_PASSWORD : root

Mungkin ada pertanyaan, dimana bisa mengetahui IP_MACHINE? Coba dari machine, ketik di console ‘ifconfig‘, cari vboxnet, ada ip gateway nya disana.

Kadang IP yang digunakan ialah IP local, yaitu 10.0.2.2. Ada baiknya juga memberikan akses ke IP tersebut.

7. Restart kembali mysql

sudo service mysql restart

8. Untuk mengecek apakah database di dalam vagrant sudah bisa diakses atau belum, bisa mengaksesnya dari mysql yang terinstall di machine, contohnya seperti ini (dari machine, buka dari vagrant) :

mysql -hIP_MACHINE -uROOT_USER -pYOUR_CUSTOM_PASSWORD

9. Kalau berhasil, maka database sudah bisa diakses dari machine

Lumayan mabok juga ngurusin yang beginian, haha. OK deh, ini cuma sebagai catatan saya saja jika di kemudian hari saya lupa. Mungkin ada teman-teman yang kebetulan juga mengalami hal yang serupa.

“Stay Foolish, Stay Hungry”

Happy Blogging and Keep Coding

Cheerrrss….!!!!

Leave a Reply

Your email address will not be published. Required fields are marked *