簡體   English   中英

如何記錄MySQL查詢?

[英]How can I log MySQL queries?

是否可以記錄所有已執行的查詢? 我正在查看可被許多不同應用訪問的數據庫。 其中之一是以不應該的方式修改表的值。 我正在嘗試找出哪個應用程序是罪魁禍首。 如果我可以捕獲在該表上以及在什么時候執行的所有查詢,那將對我有很大幫助。

在此先感謝您的幫助。

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

[mysqld]
log=/tmp/mysql.log

本文對此作了充分的解釋。

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

在您的.ini配置中添加此行

log=allqueries.log

您將需要重新啟動mysql

解決您的問題的一種可能的方法是利用有關表的更新觸發器。 對該表的任何更新都將觸發該觸發器,並且可以編寫該觸發器,以便使其在滿足某些條件(所討論的值已更改)時執行操作(例如寫入臨時表,SQL語句)做出改變)。 有關更多信息,建議您查看觸發器語法

您可以使用MySQL中的常規日志來實現此目的 我只建議您在沒有許多並發用戶的情況下在測試/開發數據庫上執行此操作,因為生成的輸出量很大 我不確定它是否記錄時間戳。

如果沒有,我會說編寫一個簡單的腳本,該腳本從stdin讀取行,並在讀取行時以當前時間戳打印行,並將日志文件中的tail -f傳遞給它,因此您可以添加自己的時間戳。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM