小站日誌 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 執行。

image

圖一、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 了

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料