Beranda » bagaimana » Lacak Kueri MySQL dengan mysqlsniffer di Ubuntu

    Lacak Kueri MySQL dengan mysqlsniffer di Ubuntu

    Anda memiliki server basis data produksi, dan Anda tidak dapat mengaktifkan pencatatan kueri ... jadi bagaimana Anda melihat kueri yang dieksekusi terhadap basis data?

    Jawabannya: gunakan sniffer jaringan yang dimodifikasi untuk mengurai paket-paket MySQL dan mendekode mereka. Anda harus melakukan kompilasi sedikit, tetapi itu akan sia-sia. Perhatikan bahwa ini biasanya tidak akan berfungsi untuk koneksi lokal, meskipun Anda dapat mencobanya.

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

    sudo apt-get install libpcap-dev

    Sekarang mari kita membuat 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 package_handlers.c misc.c

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

    Untuk menjalankan mysqlsniffer, Anda perlu menentukan antarmuka jaringan tempat MySQL mendengarkan. Bagi saya, ini eth0.

    sudo / path / ke / mysqlsniffer eth0

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

    $ 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: 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: TAMPILKAN KOLOM PENUH DARI 'db2842_howto'. 'Wp_users'

    Ah, sekarang kita di sini ... semua jenis informasi permintaan, tanpa harus me-restart MySQL.

    Berikut adalah opsi lengkap untuk perintah:

    Penggunaan: INTERFACE mysqlsniffer [PILIHAN]

    PILIHAN:
    -port N Dengarkan MySQL pada nomor port N (default 3306)
    -verbose Tampilkan informasi paket tambahan
    -tcp-ctrl Tampilkan paket kontrol TCP (SYN, FIN, RST, ACK)
    -net-hdrs Tampilkan nilai IP utama dan header TCP
    -no-mysql-hdrs Jangan tampilkan tajuk MySQL (paket ID dan panjangnya)
    -state Tampilkan state
    -v40 MySQL server adalah versi 4.0
    -dump Dump semua paket dalam hex
    -bantu 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 permintaan.