2012年2月25日土曜日

UbuntuのmysqlsnifferでMySQLのクエリを追跡する

あなたは、本番データベースのサーバを持っている、とあなたは、クエリログを有効にすることはできません...それでは、どのようにデータベースに対して実行されるクエリを参照してくださいか?

答え:MySQLのパケットを解析し、それらをデコードするために変更されたネットワークスニファを使用する。あなたは、コンパイルはほとんど行う必要があるでしょうが、それはそれの価値があるでしょう。あなたが試しに歓迎されていますが、これは通常、ローカル接続に使用できないので注意してください。

まず、アプリケーションがネットワークパケットをスニッフィングできるようにする開発ライブラリですのlibpcap - devをインストールする必要があります。

須藤はapt - getをインストールするのlibpcap - devパッケージ

今度は、ディレクトリを作成できるように、ソースコードをダウンロードしてコンパイル

MKDIR mysqlsniffer

CD mysqlsniffer

wgetのhackmysql.com /コード/ mysqlsniffer.tgz

タールxvfz mysqlsniffer.tgz

gccの- O2 - lpcap - O mysqlsniffer mysqlsniffer.c packet_handlers.c misc.c

この時点で、我々はソースディレクトリでmysqlsnifferという光沢のある新しい実行可能ファイルを持っている。好きな場所は(どこかにパスするのに有用となる)、それをコピーすることができます

mysqlsnifferを実行するには、MySQLがリッスンしているネットワークインタフェースを指定する必要があります。私にとって、それはeth0です。

eth0をsudoを/パス/に/ mysqlsniffer

スタッフの負荷がで飛行着工...我々は単にクエリではなく、すべての余分なデータを得ることができるので、もう少しそれを除外してみましょう。

$ sudoを/パス/ / 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からFULL COLUMNSを、SHOW

ああ、今そこに我々は... MySQLを再起動することなく、クエリ情報のあらゆる種類の、。

ここにコマンドの完全なオプションは次のとおりです。

使用法:mysqlsniffer [OPTIONS] INTERFACE

OPTIONS:
ポートNポート番号N(デフォルトは3306)上でMySQLをリッスン
- verboseは余分なパケット情報を表示する
- TCP - CTRLショーTCPコントロールパケット(SYN、FIN、RST、ACK)
- NET - HDRSは、主要なIPおよびTCPヘッダーの値を表示する
- NO - mysqlの- HDRSはMySQLのヘッダ(パケットIDと長さ)表示しない
状態の表示状態
- V40のMySQLサーバはバージョン4.0です。
十六進法ですべてのパケットをダンプダンプ
このを印刷する - 助け

元のソースコードと、より多くの情報:
http://goo.gl/eWzrN

開発サーバー上で実行されている場合、それは単にする方が簡単です クエリのログ記録をオンにする.

0 件のコメント:

コメントを投稿