1. 程式人生 > >mysql記錄所有執行過的SQL

mysql記錄所有執行過的SQL

前不久,遇見一些問題,要監控一下SQL的執行,看看是不是有哪些SQL是要去掉的之類的

於是我上網找啊找啊,給出來的結果都是一種,修改my.cnf檔案

我按著網上的說法去做,結果我直接崩潰了,

也不知道是不是我的環境是自己編譯安裝的還是其他什麼的,反正按照改了以後就是死活執行不起來

沒辦法,只好自己看看怎麼弄了

這時想起了剛剛接觸mysql時的一個SQL

show variables like "%name%";

set names utf8;

瞬間明瞭,找到了一個在沒有重啟mysql就不會失效的方法了

先show variables看看都有哪些變數是控制這個日誌記錄的

| general_log       | OFF |
| general_log_file | /data/mysql/localhost.log |

看到沒?這從字面上就明顯的告訴你了

那剩下來的就簡單了

mysql> set general_log=on;
ERROR 1229 (HY000): Variable 'general_log' is a GLOBAL variable and should be set with SET GLOBAL

好吧,還是個全域性變數

mysql> set global general_log=on;
Query OK, 0 rows affected (0.00 sec)

再看看變數情況

| general_log       | ON |
| general_log_file | /data/mysql/localhost.log |

隨便執行一些語句,然後再看看對應的目錄下的檔案,有沒有我們的操作記錄

170109 16:47:06 544 Query set general_log=on
170109 16:47:31 544 Query set global general_log=on
170109 16:47:56 544 Query show variables

完事,收工