小站日誌 2013 007 – 幫資料庫的安全日誌減肥
描述:
以 SQL 句法替資料庫的 log 減肥
說明:
我只是要刪除自己的 IP ,進行工程試驗的時候,自己的 IP 當然會有一大堆記錄,妨礙判斷。
可是我又不是要全部刪除掉,畢竟別的 IP 我要留著觀察啊! 找半天找不到這種聰明的外掛…但與其這樣耗下去,要找到合用版本又對的外掛都不知道要到民國幾年,不如自己到 phpMyAdmin 玩一下。
phpMyAdmin 方便的地方在於你手動操作的行為,他都會把動作以 SQL 語法的形式返回給你看,你就可以照抄來用,當然,得修改一下。
今天我要減肥的資料表來自兩隻外掛: Better WP security 的以及 Statpress
實作:
1. 先去手動試試看,phpMyAdmin 大致返回了這樣樣的語法:
DELETE FROM `wp前綴字_bwps_log` WHERE `wp前綴字_bwps_log`.`id`='16843' LIMIT 1;
解釋一下這句的意思:從 前綴字_bwps_log 資料表 刪除 id=16843 的這一筆資料。
後面那個 `前綴字_bwps_log`.`id` 是一種以防萬一的寫法,意思就是「 `前綴字_bwps_log` 裡面的 `id`欄位」,如懶惰一般情況下其實只有寫 `id` 也可以的,只要你確定你正在操作的資料表沒弄錯。
LIMIT 1 是一種保險,就是最多只操作一筆資料,這樣就不會大刪特刪,而只會刪除 MySQL 找到的第一筆符合的資料。
那個 id 是一個流水編號的欄位,我不是要刪除特定流水號的資料,所以我當然要改一下。Better WP security 把 IP 記錄在 host 欄位,我要刪除 來自 255.255.255.255 的自己,那麼我就改成如下:
DELETE FROM `前綴字_bwps_log` WHERE `前綴字_bwps_log`.`host`='255.255.255.255' LIMIT 1;
一樣加了 LIMIT 1 在後面,以防萬一。
怎麼執行自訂SQL 呢? 你可以看到 phpMyAdmin 上方有個 SQL 按鈕,點選並開啟在新的視窗、分頁,如此可以方便觀察。
把語句貼到欄框後,按下 Go 執行。
圖一、phpMyAdmin 介面
回到原本的資料表看看,第一筆符合 host=255.255.255.255 的資料刪除了沒有?
沒問題的話,就把 LIMIT 拿掉,把剩下的符合資料都刪了,如下:
DELETE FROM `前綴字_bwps_log` WHERE `前綴字_bwps_log`.`host`='255.255.255.255';
完成後,再把 Statpress 的也搞定,最終範例如下:
DELETE FROM `前綴字_statpress` WHERE `前綴字_statpress`.`ip`='255.255.255.255';
回頭,撰寫 PHP 的簡易表單,處理一下 IP 的撰寫句法,譬如 111.111.*.* 全部刪除,然後提交出 SQL 語句給 MySQL,就可以自訂管理 log 了
Leave a Reply