MySQL5.1之前general log不能在运行时启用或禁用,有时想捕捉SQL来查找问题就很麻烦,偶然间发现一个很不错的小工具:mysqlsniffer,可以用来捕捉SQL语句,使用帮助如下:mysqlsniffer --help mysqlsniffer v1.2 - Watch MySQL traffic on a TCP/IP network
Usage: mysqlsniffer [OPTIONS] INTERFACE
OPTIONS: --port N Listen for MySQL on port number N (default 3306) --verbose Show extra packet information --tcp-ctrl Show TCP control packets (SYN, FIN, RST, ACK) --net-hdrs Show major IP and TCP header values --no-mysql-hdrs Do not show MySQL header (packet ID and length) --state Show state --v40 MySQL server is version 4.0 --dump Dump all packets in hex --help Print this
Original source code and more information at: http://hackmysql.com/mysqlsniffer
INTERFACE是指网卡号,如eth0,eth1,lo等。
当然也有人直接tcpdump来捕捉的,方法如下:
tcpdump -i eth1 -s 0 -l -w - dst port 3306 | strings | perl -e ' while(<>) { chomp; next if /^[^ ]+[ ]*$/; if(/^(SELECT|UPDATE|DELETE|INSERT|SET|COMMIT|ROLLBACK|CREATE|DROP|ALTER)/i) { if (defined $q) { print "$qn"; } $q=$_; } else { $_ =~ s/^[ t]+//; $q.=" $_"; } }'转载于:https://www.cnblogs.com/seawwh/archive/2011/10/28/2227770.html
