If-Koubou

Lacak Query MySQL dengan mysqlsniffer di Ubuntu

Lacak Query MySQL dengan mysqlsniffer di Ubuntu (Bagaimana caranya)

Anda memiliki server basis data produksi, dan Anda tidak dapat mengaktifkan pembuatan log ... 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 sia-sia. 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 kompilasinya

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 / ke / mysqlsniffer eth0

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

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

192.168.73.1.2622> server: COM_QUERY: PILIH @@ 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: PILIH @@ SQL_MODE
192.168.73.1.1636> server: COM_QUERY: TAMPILKAN KOLOM LENGKAP DARI '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 negara
-v40 server MySQL adalah versi 4.0
-dump Dump semua paket dalam hex
-membantu Cetak ini

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

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