2011-01-13 155 views
2

是否可以記錄所有執行的查詢?我正在查看由許多不同的應用程序訪問的數據庫。其中之一是以不應該的方式修改表格的值。我試圖找出哪個應用程序是罪魁禍首。如果我可以捕獲在該表上以及在什麼時間執行的所有查詢,它將會幫助我很多。如何記錄MySQL查詢?

非常感謝您的幫助。

+0

是什麼把my.cnf中最好的地方,我怎麼告訴甲基苯丙胺,其中該文件?所以它會工作。因爲不管我什麼都不做就會被記錄下來。我正在使用MAMP的MAMP,就像窗戶上的wamp一樣。 – 2011-08-02 22:57:38

回答

0

據我所知,目前沒有內置MySQL的審計功能。從生成它們的應用程序中記錄查詢,或者嗅探到服務器的連接。

+0

請用你的downvote發表評論。我的回答有什麼問題?謝謝。 – 2011-01-13 01:49:18

+0

@Sarmen:請將我們引導至此功能的文檔。如果它存在,那麼我會高興地刪除/編輯我的答案。否則,請刪除您的downvote。無論如何,downvotes最好伴有_explanations_。謝謝。 – 2011-08-02 23:35:03

0
在你的.ini配置

加入這一行

log=allqueries.log 

,你將需要重新啓動mysql的

0

一個可能的解決問題的方法是利用對有問題的表的更新觸發器。該觸發器將觸發該表的任何更新,並且可以編寫觸發器,以便在滿足特定條件(所涉及的值發生更改)時執行操作(可能寫入臨時表,即SQL語句這使得改變)。欲瞭解更多信息,我建議看看Trigger Syntax

0

You can use the general log in MySQL to achieve this。我只建議你在沒有許多併發用戶的測試/開發數據庫上這樣做,因爲產生的輸出量是巨大的。但我不確定是否記錄時間戳。

如果不是這樣,在一個unix/linux的設置中,我會說寫一個簡單的腳本,讀取stdin中的行,並在讀取時用當前時間戳打印行,然後pipe tail -f on日誌文件,所以你可以添加你自己的時間戳。

1

既可以使用--log[=file_name]命令行開關上的mysqld或編輯/創建包含my.cnf

[mysqld] 
log=/tmp/mysql.log 

this article充分解釋。