โฮมเพจ » ทำอย่างไร » ติดตาม MySQL Queries ด้วย mysqlsniffer บน Ubuntu

    ติดตาม MySQL Queries ด้วย mysqlsniffer บน Ubuntu

    คุณมีเซิร์ฟเวอร์ฐานข้อมูลการผลิตและคุณไม่สามารถเปิดใช้งานการบันทึกคิวรีได้ ... ดังนั้นคุณจะเห็นคิวรีที่ถูกดำเนินการกับฐานข้อมูลได้อย่างไร?

    คำตอบ: ใช้เครือข่ายดมกลิ่นดัดแปลงเพื่อแยกออกแพ็กเก็ต MySQL และถอดรหัสพวกเขา คุณจะต้องรวบรวมข้อมูลเล็กน้อย แต่มันจะคุ้มค่า โปรดทราบว่าการดำเนินการนี้จะใช้ไม่ได้กับการเชื่อมต่อในระบบ แต่คุณสามารถลองได้.

    ก่อนอื่นคุณต้องติดตั้ง libpcap-dev ซึ่งเป็นไลบรารี่การพัฒนาที่อนุญาตให้แอปพลิเคชันดมกลิ่นแพ็คเก็ตเครือข่าย.

    sudo apt-get install libpcap-dev

    ตอนนี้ให้ทำไดเรกทอรีดาวน์โหลดซอร์สโค้ดและรวบรวม

    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

    ณ จุดนี้เรามีไฟล์ปฏิบัติการใหม่ชื่อ mysqlsniffer ในไดเรกทอรีต้นทางของเรา คุณสามารถคัดลอกทุกที่ที่คุณต้องการ (ที่ไหนสักแห่งในเส้นทางจะเป็นประโยชน์)

    ในการเรียกใช้ mysqlsniffer คุณจะต้องระบุอินเทอร์เฟซเครือข่ายที่ MySQL รับฟังอยู่ สำหรับฉันมันคือ eth0.

    sudo / path / to / mysqlsniffer eth0

    สิ่งต่างๆมากมายเริ่มต้นด้วย ... ลองกรองออกอีกหน่อยเพื่อเราจะได้รับข้อความค้นหาไม่ใช่ข้อมูลส่วนเกินทั้งหมด.

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

    192.168.73.1.2622> เซิร์ฟเวอร์: COM_QUERY: SELECT @@ sql_mode
    192.168.73.1.2622> เซิร์ฟเวอร์: COM_QUERY: SET SESSION sql_mode =”
    192.168.73.1.2622> เซิร์ฟเวอร์: COM_QUERY: SET NAMES utf8
    192.168.73.1.1636> เซิร์ฟเวอร์: COM_QUERY: SELECT @@ SQL_MODE
    192.168.73.1.1636> เซิร์ฟเวอร์: COM_QUERY: แสดงคอลัมน์เต็มรูปแบบจาก 'db2842_howto'. 'wp_users'

    อ่าตอนนี้เรามี ... ทุกข้อสอบถามข้อมูลโดยไม่ต้องรีสตาร์ท MySQL.

    นี่คือตัวเลือกแบบเต็มสำหรับคำสั่ง:

    การใช้งาน: mysqlsniffer [OPTIONS] INTERFACE

    ตัวเลือก:
    -พอร์ต N ฟัง MySQL บนหมายเลขพอร์ต N (ค่าเริ่มต้น 3306)
    -แสดงข้อมูลแพ็คเก็ตพิเศษ
    -tcp-ctrl แสดงแพ็กเก็ตควบคุม TCP (SYN, FIN, RST, ACK)
    -net-hdrs แสดงค่า IP และ TCP header ที่สำคัญ
    -no-mysql-hdrs อย่าแสดงส่วนหัว MySQL (ID แพ็กเก็ตและความยาว)
    -แสดงสถานะ
    -เซิร์ฟเวอร์ MySQL v40 เป็นรุ่น 4.0
    -ดัมพ์ดัมพ์แพ็กเก็ตทั้งหมดเป็นเลขฐานสิบหก
    -ช่วยพิมพ์สิ่งนี้

    ซอร์สโค้ดต้นฉบับและข้อมูลเพิ่มเติมที่:
    http://hackmysql.com/mysqlsniffer

    หากคุณกำลังทำงานบนเซิร์ฟเวอร์การพัฒนามันจะง่ายกว่าที่จะเปิดการบันทึกแบบสอบถาม.