Trang chủ » làm thế nào để » Theo dõi truy vấn MySQL với mysqlsniffer trên Ubuntu

    Theo dõi truy vấn MySQL với mysqlsniffer trên Ubuntu

    Bạn đã có một máy chủ cơ sở dữ liệu sản xuất và bạn không thể kích hoạt ghi nhật ký truy vấn, vậy làm thế nào để bạn thấy các truy vấn được thực thi đối với cơ sở dữ liệu?

    Câu trả lời: sử dụng một trình thám thính mạng được sửa đổi để phân tích các gói MySQL và giải mã chúng. Bạn sẽ phải biên dịch một chút, nhưng nó sẽ có giá trị. Lưu ý rằng điều này thường không hoạt động đối với các kết nối cục bộ, mặc dù bạn được chào đón dùng thử.

    Trước tiên, bạn cần cài đặt libpcap-dev, đây là thư viện phát triển cho phép ứng dụng đánh hơi các gói mạng.

    sudo apt-get cài đặt libpcap-dev

    Bây giờ hãy tạo một thư mục, tải mã nguồn và biên dịch nó

    mkdir mysqlsniffer

    cd mysqlsniffer

    wget hackmysql.com/code/mysqlsniffer.tgz

    tar xvfz mysqlsniffer.tgz

    gcc -O2 -lpcap -o mysqlsniffer mysqlsniffer.c pack_handlers.c misc.c

    Tại thời điểm này, chúng tôi có một tệp thực thi mới sáng bóng có tên mysqlsniffer trong thư mục nguồn của chúng tôi. Bạn có thể sao chép nó bất cứ nơi nào bạn muốn (một nơi nào đó trong đường dẫn sẽ hữu ích)

    Để chạy mysqlsniffer, bạn cần chỉ định giao diện mạng mà MySQL đang nghe. Đối với tôi, đó là eth0.

    sudo / đường dẫn / đến / mysqlsniffer eth0

    Hàng đống thứ bắt đầu bay bằng cách chúng ta hãy lọc nó ra thêm một chút để chúng ta có thể nhận được các truy vấn và không phải tất cả dữ liệu dư thừa.

    $ sudo / đường dẫn / đến / mysqlsniffer -no-mysql-hdrs eth0 | grep COM_QUERY

    192.168.73.1.2622> máy chủ: COM_QUERY: CHỌN @@ sql_mode
    192.168.73.1.2622> máy chủ: COM_QUERY: SET SESSION sql_mode =
    192.168.73.1.2622> máy chủ: COM_QUERY: THIẾT LẬP TÊN utf8
    192.168.73.1.1636> máy chủ: COM_QUERY: CHỌN @@ SQL_MODE
    192.168.73.1.1636> máy chủ: COM_QUERY: HIỂN THỊ ĐẦY ĐỦ TỪ 'db2842_howto'. 'Wp_users'

    À, bây giờ chúng tôi có tất cả các loại thông tin truy vấn, mà không phải khởi động lại MySQL.

    Dưới đây là các tùy chọn đầy đủ cho lệnh:

    Cách sử dụng: mysqlsniffer [TÙY CHỌN] GIAO DIỆN

    LỰA CHỌN:
    -cổng N Nghe MySQL trên số cổng N (mặc định 3306)
    -verbose Hiển thị thêm thông tin gói
    -tcp-ctrl Hiển thị các gói điều khiển TCP (SYN, FIN, RST, ACK)
    -net-hdrs Hiển thị giá trị tiêu đề IP và TCP chính
    -no-mysql-hdrs Không hiển thị tiêu đề MySQL (ID gói và độ dài)
    -trạng thái Hiển thị trạng thái
    -Máy chủ v40 MySQL là phiên bản 4.0
    -kết xuất tất cả các gói trong hex
    -giúp in này

    Mã nguồn gốc và nhiều thông tin hơn tại:
    http://hackmysql.com/mysqlsniffer

    Nếu bạn đang chạy trên một máy chủ phát triển, việc bật ghi nhật ký truy vấn sẽ dễ dàng hơn.