2014
06
21

MySQLのパケットをtcpdumpでキャプチャできない!?

MySQLのパケットをtcpdumpでキャプチャしようとしたら、全くキャプチャできないという事態が発生。

とりあえずMySQLに接続した状態でnetstatを打ってみる。

■netstatの結果
[user@example ~]$ netstat -an | grep 3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN


3306ポート(MySQLポート)がLISTENのままになっている?
もし接続が確立しているならESTABLISHEDになるはずなのに。。。

もう一度netstatの結果をよく見てみると「UNIX domain sockets」のところに以下のような表示を発見
[user@example ~]$ netstat -an
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 3 [ ] STREAM CONNECTED 11288 /var/lib/mysql/mysql.sock


どうやらUNIXドメインソケットにつながっていた模様。

■UNIXドメインソケットとは?
簡単に説明するとローカルマシン上のプロセス間通信で利用するソケットのこと。これはネットワークを介さない通信なのでtcpdumpではパケットを拾うことができない。

■原因と解決策
MySQLに接続する際、ホスト名を指定しないと『localhost』で接続することになる。その場合、UNIXドメインソケットにつなぐことになるのでtcpdumpではパケットを拾えない。

なのでMySQLに接続する際は以下のようにしてホスト名を指定すればOK。
mysql -h [hostname] -u [username]

■netstatの結果
[user@example ~]$ netstat -an | grep 3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:42495 127.0.0.1:3306 ESTABLISHED
tcp 0 0 127.0.0.1:3306 127.0.0.1:42495 ESTABLISHED


これでtcpdumpでMySQLのパケットをキャプチャできるようになります。

以上

参考URL
http://norainu.net/mt/archives/2007/02/localhost_unix.html
Comment



Only the blog author may view the comment.


Trackback
Trackback URL

«  | HOME |  »

奇妙な風景 Unique Scene
<< >>

プロフィール


最新記事


最新コメント


最新トラックバック


月別アーカイブ


カテゴリ


スポンサード リンク


FC2カウンター


検索フォーム


RSSリンクの表示


リンク


ブロとも申請フォーム


QRコード