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
Theo dõi truy vấn MySQL với mysqlsniffer trên Ubuntu

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

Video: Theo dõi truy vấn MySQL với mysqlsniffer trên Ubuntu
Video: Tự học Database và SQL Cơ Bản siêu nhanh trong 10 phút - YouTube 2024, Tháng Ba
Anonim

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

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

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

sudo apt-get install libpcap-dev

Bây giờ, hãy tạo một thư mục, tải xuống 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 packet_handlers.c misc.c

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

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

sudo /path/to/mysqlsniffer eth0

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

$ sudo /path/to/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: SHOW FULL COLUMNS FROM `db2842_howto`.`wp_users`

Ah, bây giờ có chúng tôi … tất cả các loại thông tin truy vấn, mà không cần 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 [OPTIONS] INTERFACE

TÙY CHỌN: –Port N Nghe MySQL trên cổng số N (mặc định 3306) –Verbose Hiển thị thông tin gói thêm –Tcp-ctrl Hiển thị các gói điều khiển TCP (SYN, FIN, RST, ACK) –Net-hdrs Hiển thị các 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ị tiểu bang –V40 Máy chủ MySQL là phiên bản 4.0 -Dump Dump tất cả các gói trong hex –Help In bài này

Mã nguồn gốc và thông tin thêm tại: https://hackmysql.com/mysqlsniffer

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

Đề xuất: