sql >> データベース >  >> RDS >> Mysql

Wiresharkを使用してmysqlクエリSQLを明確にキャプチャする方法

    tsharkを使用してpcapに保存するか、関心のあるフィールドをエクスポートすることができます。

    pcapに保存するには(wiresharkを使用して後で表示する場合):

    tshark -i lo -Y "mysql.command==3" -w outputfile.pcap
    tshark -i lo -R "mysql.command==3" -w outputfile.pcap
    -R is deprecated for single pass filters, but it will depend on your version
    -i is interface so replace that with whatever interface you are using (e.g -i eth0)
    

    テキストファイルに保存するには:

    tshark -i lo -Y "mysql.command==3" -T fields -e mysql.query > output.txt
    

    tcpdump(およびwireshark pre capフィルター)でBPFフィルターを使用することもできます。これらはより複雑ですが、大量のトラフィックをキャプチャしている場合は、システムへの負担が少なくなります。

    sudo tcpdump -i lo "dst port 3306 and  tcp[(((tcp[12:1]&0xf0)>>2)+4):1]=0x03" -w outputfile.pcap
    

    注:
    *これはTCPペイロード内で03(同様のmysql.command ==3)を検索します。
    **これはかなり緩いフィルターであるため、3306を追加して、宛先のトラフィックのみに制限しました。そのポート。***フィルターはスクリーンショットに基づいています。現在検証できませんので、動作しない場合はお知らせください。

    出力例:



    1. 異なるデータベース間で列を選択します

    2. OracleにSKIPLOCKEDでTOPN行を返すように強制します

    3. Oracleデータベースで連想配列を作成する方法

    4. MySQLは範囲内のすべての日付を表示します