Laman » bagaimana untuk » Lacak pertanyaan MySQL dengan mysqlsniffer di Ubuntu

    Lacak pertanyaan MySQL dengan mysqlsniffer di Ubuntu

    Anda telah mendapat pelayan pangkalan data pengeluaran, dan anda tidak boleh mendayakan pembalakan pertanyaan ... jadi bagaimana anda melihat pertanyaan yang dijalankan terhadap pangkalan data?

    Jawapannya: menggunakan penyimpang rangkaian yang diubah suai untuk menghilangkan paket MySQL dan menyahkodnya. Anda perlu membuat sedikit penyusun, tetapi ia akan berbaloi. Perhatikan bahawa ini biasanya tidak akan berfungsi untuk sambungan tempatan, walaupun anda dialu-alukan untuk mencuba.

    Pertama, anda perlu memasang libpcap-dev, iaitu perpustakaan pembangunan yang membolehkan aplikasi menghidu paket rangkaian.

    sudo apt-get install libpcap-dev

    Sekarang mari kita buat direktori, muat turun kod sumber dan kumpulkannya

    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 ketika ini, kami mempunyai executable baru yang berkilat bernama mysqlsniffer dalam direktori sumber kami. Anda boleh menyalinnya di mana sahaja yang anda suka (di suatu tempat di jalan itu berguna)

    Untuk menjalankan mysqlsniffer, anda perlu menentukan antara muka rangkaian yang didengar oleh MySQL. Bagi saya, itu adalah et0.

    sudo / path / to / mysqlsniffer eth0

    Banyak barang yang mula terbang dengan ... mari kita menyaringnya sedikit lebih sehingga kita hanya boleh mendapatkan pertanyaan dan tidak semua data berlebihan.

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

    192.168.73.1.2622> pelayan: COM_QUERY: SELECT @@ sql_mode
    192.168.73.1.2622> pelayan: COM_QUERY: SET SESI sql_mode = "
    192.168.73.1.2622> pelayan: COM_QUERY: SET NAMES utf8
    192.168.73.1.1636> pelayan: COM_QUERY: PILIH @@ SQL_MODE
    192.168.73.1.1636> pelayan: COM_QUERY: SHOW COLUM FULL FROM 'db2842_howto'. 'Wp_users'

    Ah, kini kami ada ... pelbagai maklumat pertanyaan, tanpa perlu memulakan MySQL.

    Berikut adalah pilihan penuh untuk arahan:

    Penggunaan: mysqlsniffer [OPTIONS] INTERFACE

    PILIHAN:
    -port N Dengarkan MySQL pada nombor port N (lalai 3306)
    -verbose Tunjukkan maklumat paket tambahan
    -tcp-ctrl Tunjukkan paket kawalan TCP (SYN, FIN, RST, ACK)
    -net-hdrs Tunjukkan nilai utama IP dan TCP header
    -no-mysql-hdrs Jangan tunjukkan pengepala MySQL (ID paket dan panjang)
    -negeri Tunjuk keadaan
    -v40 MySQL server adalah versi 4.0
    -membuang semua paket dalam hex
    -tolong cetak ini

    Kod sumber asal dan maklumat lanjut di:
    http://hackmysql.com/mysqlsniffer

    Sekiranya anda menjalankan pelayan pembangunan, lebih mudah hanya menghidupkan pembalakan pertanyaan.