Lacak Query MySQL dengan mysqlsniffer di Ubuntu

Lacak Query MySQL dengan mysqlsniffer di Ubuntu
Lacak Query MySQL dengan mysqlsniffer di Ubuntu

Video: Lacak Query MySQL dengan mysqlsniffer di Ubuntu

Video: Lacak Query MySQL dengan mysqlsniffer di Ubuntu
Video: Belajar Basis Data untuk Pemula - YouTube 2024, Maret
Anonim

Anda memiliki server basis data produksi, dan Anda tidak dapat mengaktifkan pembuatan log kueri … jadi bagaimana Anda melihat kueri dijalankan terhadap database?

Jawabannya: gunakan sniffer jaringan yang dimodifikasi untuk mem-parse paket-paket MySQL dan memecahkan kode mereka. Anda harus melakukan sedikit kompilasi, tetapi itu akan sepadan. Perhatikan bahwa ini biasanya tidak akan berfungsi untuk koneksi lokal, meskipun Anda dipersilakan untuk mencoba.

Pertama, Anda perlu menginstal libpcap-dev, yang merupakan pustaka pengembangan yang memungkinkan aplikasi mengendus paket jaringan.

sudo apt-get install libpcap-dev

Sekarang mari buat direktori, unduh kode sumber dan kompilasi

mkdir mysqlsniffer

cd mysqlsniffer

wget hackmysql.com/code/mysqlsniffer.tgz

tar xvfz mysqlsniffer.tgz

gcc -O2 -lpcap -o mysqlsniffer mysqlsniffer.c packet_handlers.c misc.c

Pada titik ini, kita memiliki executable baru bernama mysqlsniffer yang mengkilap di direktori sumber kami. Anda dapat menyalinnya di mana pun Anda suka (di suatu tempat di jalan akan berguna)

Untuk menjalankan mysqlsniffer, Anda perlu menentukan antarmuka jaringan yang sedang didengarkan oleh MySQL. Bagi saya, itu eth0.

sudo /path/to/mysqlsniffer eth0

Banyak barang mulai terbang … mari kita saring sedikit lebih banyak sehingga kita bisa mendapatkan kueri dan tidak semua data berlebih.

$ sudo /path/to/mysqlsniffer –no-mysql-hdrs eth0 | grep COM_QUERY

192.168.73.1.2622 > server: COM_QUERY: SELECT @@sql_mode 192.168.73.1.2622 > server: COM_QUERY: SET SESSION sql_mode=” 192.168.73.1.2622 > server: COM_QUERY: SET NAMES utf8 192.168.73.1.1636 > server: COM_QUERY: SELECT @@SQL_MODE 192.168.73.1.1636 > server: COM_QUERY: SHOW FULL COLUMNS FROM `db2842_howto`.`wp_users`

Ah, sekarang di sana kita … segala macam informasi permintaan, tanpa harus me-restart MySQL.

Berikut adalah opsi lengkap untuk perintah:

Penggunaan: mysqlsniffer [OPTIONS] INTERFACE

PILIHAN: –Port N Dengarkan MySQL pada nomor port N (default 3306) –Verbose Tampilkan informasi paket tambahan –Tcp-ctrl Tunjukkan paket kontrol TCP (SYN, FIN, RST, ACK) –Net-hdrs Menampilkan nilai-nilai utama IP dan TCP header –No-mysql-hdrs Jangan tampilkan header MySQL (ID paket dan panjang) –State Tampilkan status –V40 server MySQL adalah versi 4.0 –Dump Dump semua paket dalam hex –Membantu Cetak ini

Kode sumber asli dan informasi lebih lanjut di: https://hackmysql.com/mysqlsniffer

Jika Anda menjalankan pada server pengembangan, akan lebih mudah untuk hanya mengaktifkan pencatatan log.

Direkomendasikan: