2011-08-18 68 views

回答

1

打開MySQL中的查詢日誌並監視mysql查詢日誌文件。

在你的mysqld部分的my.cnf或my.ini文件中添加指令:

log = /path/to/my/log/file 
0

有很多種方法,看「原始」的查詢,端口掃描使用tcpdump的,MySQL的代理,或看「中mysqladmin -Ppasswd‘PROCESSLIST’」雖然時間很短,你可以這樣做:

Start: 
echo "set global general_log_file=mysqllogfile;set global general_log=1;" | mysql -u root -ppasswd 

From now on all queries will appear in /var/lib/mysql/mysqllogfile 

Stop: 
echo "set global general_log=0;" | mysql -u root -ppasswd 

不要忘記完成後禁用!

您可以登錄查詢表mysql.general_log:

echo "set global log_output=TABLE;" | mysql -u root -ppasswd 
# restart logging 
echo "set global general_log=0;" | mysql -u root -ppasswd 
echo "set global general_log=1;" | mysql -u root -ppasswd 

注意查看general_log表還使他們更新!

+2

我其實是在尋找一種方式來做到這一點在PHP。這對MySQLi可能嗎?謝謝! – Harry

+0

您可以使用php-mysqli發出這些命令並從表mysql.general_log中檢索記錄的查詢,但是爲什麼?如果你編寫並準備好查詢,那麼原始的sql是可預測的。你總是可以用你自己的類或sprintf用%d和'%s'用mysqli_real_escape_string()爲所有參數準備查詢,以便準備好'raw'sql然後記錄它們,但據我所知,唯一的看法mysql服務器使用php-mysqli預處理語句看到的是查詢general_log,並且只是一個簡短的時間窗口。 –