mysql-audit MySQL LAMP

解開MySQL封印 加掛稽核記錄功能

2013-02-04
MySQL是最受歡迎的開源資料庫,但在Log記錄方面的表現一直未盡人意,本文將透過外掛mysql-audit稽核軟體的方式來補足這一方面的缺憾。先從安裝MySQL資料庫說起,然後說明如何安裝mysql-audit,並進行測試。
說起開源碼中的資料庫解決方案,相信大家腦海裡浮現的第一個念頭應該是MySQL。這是一個開放原始碼的關聯式資料庫管理系統,最早的原開發者為瑞典的MySQL AB公司,後來輾轉被甲骨文(Oracle)收購而成為甲骨文旗下的資料庫產品。

也因為MySQL具有效能高、成本低、高可靠性的特色,目前已經成為最流行的開源資料庫,廣泛地被應用在Internet上的中小型網站。開源碼中最受歡迎的LAMP(Linux系統+Apache網站伺服器+MySQL關聯式資料庫+PHP網頁程式語言)的解決方案,其中的M指的就是MySQL。

解決方案所需的軟體套件

長久以來,MySQL雖穩居資料庫解決方案的龍頭地位,但針對商業用途非常重要的稽核功能,免費版本的MySQL卻未提供令人滿意的功能,僅有簡易的Log記錄功能(商業版本的MySQL應該會提供較好的相關功能)。

根據筆者的經驗,開啟MySQL的Log記錄功能時,由於要將所有資料庫存取的動作寫入檔案內,因此會產生大量的磁碟存取動作,這不僅嚴重地拖慢系統的執行效能,而且不具彈性。

其原因在於,MySQL會記錄所有資料庫存取的動作,無法針對管理者的需求來彈性地記錄,譬如僅記錄某個資料庫的存取紀錄,如此一來,將產生大量不必要的資訊而困擾到管理者。

有鑑於此,本解決方案將利用一套稽核軟體實作出一套具有稽核功能的MySQL資料庫。此稽核軟體為mysql-audit,是利用MySQL的外掛程式(Plugin)機制開發完成,所以可與MySQL完美地結合。

安裝MySQL資料庫

在此選用MySQL 5.1.35版本,由於mysql-audit是根據MySQL的Plugin機制之規範所完成,因此讀者所使用的MySQL版若沒有被mysql-audit所支援,就必須計算所需的偏移值(Offset)資料,並且在執行的時候載入此偏移值資料。

如果讀者所使用的MySQL版本可被mysql-audit支援,就不必取得偏移值數字,直接使用即可。

這裡假設目前所使用的MySQL版本不為mysql-audit所支援,所以須利用mysql-audit官方網站提供的offset-extract.sh程式來取得偏移值。

由於offset-extract.sh軟體僅可在含有偵錯資訊(即所謂的Debug模式)的執行檔中取得偏移值,因此,要先利用原始碼編譯的方式來編譯出偵錯(Debug)模式的MySQL執行檔,再利用offset-extract.sh程式針對此MySQL執行檔取得相關的偏移值資訊。

首先至MySQL官方網站下載原始碼(本例使用的版本為5.1.35)。解開原始碼後,利用下列編譯指令進行編譯:


該指令的用意在於組態MySQL,其中--with-debug為在執行檔上加入偵錯符號,亦即設定Debug模式,以便取得偏移值,並且支援UTF8編碼。最後,再將相關的執行檔安裝至「/usr/local/mysql5」目錄內。

接著,執行「make」指令開始編譯。筆者在此曾經遇到一個do_abi_check錯誤訊息,這可能是因為gcc版本不同所導致的,所以請將Makefile檔內與do_abi_check相關的設定移除(移除至done),如下圖所示。


▲將Makefile檔內與do_abi_check相關的設定移除。

然後,使用「make install」指令將相關的執行檔安裝至「/usr/local/mysql5」目錄內。在安裝完成後,可利用gdb程式測試MySQL的執行檔,該檔案名稱為「/usr/local/mysql5/libexec/mysqld」,相關指令內容如下:


如果可順利地進入gdb畫面,即表示該執行檔具有偵錯資訊,否則將無法進入gdb環境,並同時顯示無偵錯資訊的錯誤訊息。


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!