Track MySQL Queries with mysqlsniffer on Ubuntu Lagu MySQL Query dengan mysqlsniffer pada Ubuntu
You've got a production database server, and you can't enable query logging… so how do you see the queries being executed against the database? Anda punya server database produksi, dan Anda tidak dapat mengaktifkan permintaan penebangan ... jadi bagaimana Anda melihat dieksekusi query terhadap database?
The answer: use a modified network sniffer to parse out the MySQL packets and decode them. Jawabannya: menggunakan jaringan diubah sniffer untuk mengurai keluar paket MySQL dan decode mereka. You'll have to do a little compiling, but it'll be worth it. Anda harus melakukan sedikit kompilasi, tapi akan sia-sia. Note that this will not usually work for local connections, although you are welcome to try. Catatan bahwa ini biasanya tidak akan bekerja untuk sambungan lokal, walaupun Anda dipersilahkan untuk mencoba.
First, you need to install libpcap-dev, which is the development library that allows an application to sniff network packets. Pertama, anda perlu menginstal libpcap-dev, yang merupakan pengembangan perpustakaan yang memungkinkan aplikasi untuk mengendus paket jaringan.
sudo apt-get install libpcap-dev sudo apt-get install libpcap-dev
Now let's make a directory, download the source code and compile it Sekarang mari kita buat direktori, download source code dan compile
mkdir mysqlsniffer mkdir mysqlsniffer
cd mysqlsniffer cd mysqlsniffer
wget hackmysql.com/code/mysqlsniffer.tgz wget hackmysql.com / kode / mysqlsniffer.tgz
tar xvfz mysqlsniffer.tgz tar xvfz mysqlsniffer.tgz
gcc -O2 -lpcap -o mysqlsniffer mysqlsniffer.c packet_handlers.c misc.c gcc-O2-lpcap-o mysqlsniffer mysqlsniffer.c packet_handlers.c misc.c
At this point, we have a shiny new executable named mysqlsniffer in our source directory. Pada titik ini, kita memiliki mengkilap executable baru bernama mysqlsniffer dalam direktori source. You can copy it wherever you like (somewhere in the path would be useful) Anda dapat menyalin di mana pun Anda suka (di suatu tempat di jalan akan berguna)
To run mysqlsniffer, you need to specify the network interface that MySQL is listening on. Untuk menjalankan mysqlsniffer, Anda harus menentukan antarmuka jaringan yang mendengarkan pada MySQL. For me, it's eth0. Bagi saya, itu eth0.
sudo /path/to/mysqlsniffer eth0 sudo / path / ke / mysqlsniffer eth0
Loads of stuff starts flying by… let's filter it out a little more so we can just get the queries and not all the excess data. Banyak hal mulai terbang oleh ... ayo filter itu sedikit lebih banyak sehingga kami dapat saja mendapatkan pertanyaan dan tidak semua data kelebihan.
$ sudo /path/to/mysqlsniffer –no-mysql-hdrs eth0 | grep COM_QUERY $ Sudo / path / ke / 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: SELECT @ @ sql_mode
192.168.73.1.2622 > server: COM_QUERY: SET SESSION sql_mode=” 192.168.73.1.2622> server: COM_QUERY: SET SESI sql_mode = "
192.168.73.1.2622 > server: COM_QUERY: SET NAMES utf8 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: SELECT @ @ SQL_MODE
192.168.73.1.1636 > server: COM_QUERY: SHOW FULL COLUMNS FROM `db2842_howto`.`wp_users` 192.168.73.1.1636> server: COM_QUERY: FULL SHOW COLUMNS FROM `db2842_howto`. `Wp_users`
Ah, now there we are… all sorts of query information, without having to restart MySQL. Ah, sekarang ada kita ... segala macam permintaan informasi, tanpa harus me-restart MySQL.
Here are the full options for the command: Berikut adalah pilihan lengkap untuk perintah:
Usage: mysqlsniffer [OPTIONS] INTERFACE Usage: mysqlsniffer [PILIHAN] INTERFACE
OPTIONS: PILIHAN:
–port N Listen for MySQL on port number N (default 3306) -Port N Dengarkan MySQL pada nomor port N (default 3306)
–verbose Show extra packet information -Verbose Tampilkan informasi paket tambahan
–tcp-ctrl Show TCP control packets (SYN, FIN, RST, ACK) -Tcp-ctrl Tampilkan DNS TCP paket (SYN, FIN, RST, ACK)
–net-hdrs Show major IP and TCP header values -Net-hdrs Show utama header TCP IP dan nilai-nilai
–no-mysql-hdrs Do not show MySQL header (packet ID and length) -No-mysql-hdrs Jangan tampilkan MySQL header (paket ID dan panjang)
–state Show state Tampilkan negara-negara
–v40 MySQL server is version 4.0 -V40 server MySQL versi 4.0
–dump Dump all packets in hex -Dump Dump semua paket di hex
–help Print this Bantuan Cetak
Original source code and more information at: Kode sumber asli dan informasi lebih lanjut di:
http://hackmysql.com/mysqlsniffer http://hackmysql.com/mysqlsniffer
If you are running on a development server, it would be easier to just Jika Anda menjalankan pada server pembangunan, akan lebih mudah untuk hanya turn on query logging mengaktifkan query logging . .

Daily Email Updates Harian Email Pembaharuan
You can get our how-to articles in your inbox each day for free. Anda bisa mendapatkan kita bagaimana-untuk artikel dalam kotak masuk Anda setiap hari secara gratis. Just enter your name and email below: Cukup masukkan nama dan email Anda di bawah ini:


