ホームページ » の仕方 » Ubuntuでmysqlsnifferを使ってMySQLクエリを追跡する

    Ubuntuでmysqlsnifferを使ってMySQLクエリを追跡する

    本番データベースサーバーを使用していますが、クエリロギングを有効にできません。?

    その答えは、MySQLパケットを解析してデコードするために、修正されたネットワークスニファを使用することです。あなたは少しコンパイルをする必要がありますが、それは価値があるでしょう。試しても大丈夫ですが、これは通常ローカル接続では機能しません。.

    まず、libpcap-devをインストールする必要があります。これは、アプリケーションがネットワークパケットを盗聴できるようにする開発ライブラリです。.

    sudo apt-get 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 grep COM_QUERY

    192.168.73.1.2622>サーバー: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>サーバー:COM_QUERY:SELECT @@ SQL_MODE
    192.168.73.1.1636> server:COM_QUERY: 'db2842_howto'。 'wp_users'からすべての列を表示

    ああ、今、私たちは…MySQLを再起動せずに、あらゆる種類のクエリ情報を入手できます.

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

    使用方法:mysqlsniffer [オプション]インタフェース

    オプション:
    -port Nポート番号NでMySQLをリッスン(デフォルトは3306)
    -追加のパケット情報を表示する
    -tcp-ctrl TCP制御パケットを表示します(SYN、FIN、RST、ACK)。
    -net-hdrsメジャーIPおよびTCPヘッダー値を表示します。
    -no-mysql-hdrs MySQLヘッダーを表示しません(パケットIDと長さ)
    -状態を表示
    -v40 MySQLサーバーはバージョン4.0です
    -dumpすべてのパケットを16進数でダンプします。
    -これを印刷する

    オリジナルのソースコードと詳細情報:
    http://hackmysql.com/mysqlsniffer

    開発サーバーで実行している場合は、クエリログを有効にするだけのほうが簡単です。.