本節說明如何安裝或解除安裝 MySQL Enterprise Audit,其使用稽核記錄外掛程式和第 8.4.5.1 節「MySQL Enterprise Audit 的要素」中描述的相關要素實作。如需有關安裝外掛程式的一般資訊,請參閱第 7.6.1 節「安裝和解除安裝外掛程式」。
當您升級 MySQL 安裝時,外掛程式升級不會自動進行,而且某些外掛程式可載入函式必須手動載入 (請參閱安裝可載入函式)。或者,您可以在升級 MySQL 之後重新安裝外掛程式以載入新的函式。
請在依照指示操作之前,閱讀本節的全部內容。程序的某些部分會因您的環境而異。
如果已安裝,即使停用 audit_log
外掛程式,也會產生一些最低限度的額外負荷。為了避免這種額外負荷,除非您計劃使用 MySQL Enterprise Audit,否則請勿安裝。
若要讓伺服器使用,外掛程式程式庫檔案必須位於 MySQL 外掛程式目錄中 (由 plugin_dir
系統變數指定的目錄)。如有必要,請在伺服器啟動時設定 plugin_dir
的值,以設定外掛程式目錄位置。
若要安裝 MySQL Enterprise Audit,請在您的 MySQL 安裝的 share
目錄中尋找,並選擇適合您平台的指令碼。可用的指令碼在用於參照指令碼的檔案名稱中有所不同
audit_log_filter_win_install.sql
audit_log_filter_linux_install.sql
依如下方式執行指令碼。此處的範例使用 Linux 安裝指令碼和預設的 mysql
系統資料庫。請針對您的系統進行適當的替換。
$> mysql -u root -p -D mysql < audit_log_filter_linux_install.sql
Enter password: (enter root password here)
執行安裝指令碼時,可以指定自訂資料庫來儲存 JSON 篩選表格。請先建立資料庫;其名稱不得超過 64 個字元。例如
mysql> CREATE DATABASE IF NOT EXISTS database-name;
接著,使用替代的資料庫名稱執行指令碼。
$> mysql -u root -p -D database-name < audit_log_filter_linux_install.sql
Enter password: (enter root password here)
某些 MySQL 版本已對 MySQL Enterprise Audit 表格的結構進行變更。為了確保您的表格在從舊版 MySQL 升級時為最新狀態,請執行 MySQL 升級程序,並確保使用強制更新的選項 (請參閱第 3 章,升級 MySQL)。如果您偏好僅針對 MySQL Enterprise Audit 表格執行更新陳述式,請參閱以下討論。
對於新的 MySQL 安裝,MySQL Enterprise Audit 使用的 audit_log_user
資料表中的 USER
和 HOST
欄位,其定義能更佳地對應到 mysql.user
系統資料表中的 User
和 Host
欄位的定義。對於已安裝 MySQL Enterprise Audit 的安裝進行升級,建議您如下所示地變更資料表定義
ALTER TABLE mysql.audit_log_user
DROP FOREIGN KEY audit_log_user_ibfk_1;
ALTER TABLE mysql.audit_log_filter
CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_ci;
ALTER TABLE mysql.audit_log_user
CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_ci;
ALTER TABLE mysql.audit_log_user
MODIFY COLUMN USER VARCHAR(32);
ALTER TABLE mysql.audit_log_user
ADD FOREIGN KEY (FILTERNAME) REFERENCES mysql.audit_log_filter(NAME);
若要在來源/複本複寫、群組複寫或 InnoDB 叢集的環境中使用 MySQL Enterprise Audit,您必須先在複本節點上準備好,再於來源節點上執行安裝腳本。這是必要的,因為腳本中的 INSTALL PLUGIN
陳述式不會被複寫。
在每個複本節點上,從安裝腳本中提取
INSTALL PLUGIN
陳述式,然後手動執行它。在來源節點上,如先前所述執行安裝腳本。
若要驗證外掛程式安裝,請檢查 Information Schema PLUGINS
資料表,或使用 SHOW PLUGINS
陳述式 (請參閱 第 7.6.2 節,「取得伺服器外掛程式資訊」)。例如
mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS
FROM INFORMATION_SCHEMA.PLUGINS
WHERE PLUGIN_NAME LIKE 'audit%';
+-------------+---------------+
| PLUGIN_NAME | PLUGIN_STATUS |
+-------------+---------------+
| audit_log | ACTIVE |
+-------------+---------------+
如果外掛程式初始化失敗,請檢查伺服器錯誤日誌以取得診斷訊息。
安裝 MySQL Enterprise Audit 後,您可以在後續伺服器啟動時使用 --audit-log
選項來控制 audit_log
外掛程式的啟動。例如,若要防止外掛程式在執行期間被移除,請使用此選項
[mysqld]
audit-log=FORCE_PLUS_PERMANENT
如果希望防止伺服器在沒有稽核外掛程式的情況下執行,請使用 --audit-log
搭配 FORCE
或 FORCE_PLUS_PERMANENT
值,以強制伺服器在初始化外掛程式失敗時啟動失敗。
預設情況下,基於規則的稽核日誌篩選不會記錄任何使用者的可稽核事件。這與傳統稽核日誌的行為不同,傳統稽核日誌會記錄所有使用者的所有可稽核事件 (請參閱 第 8.4.5.10 節,「傳統模式稽核日誌篩選」)。如果您希望使用基於規則的篩選來產生記錄所有事件的行為,請建立一個簡單的篩選器以啟用記錄,並將其指派給預設帳戶
SELECT audit_log_filter_set_filter('log_all', '{ "filter": { "log": true } }');
SELECT audit_log_filter_set_user('%', 'log_all');
指派給 %
的篩選器用於來自任何未明確指派篩選器的帳戶的連線 (一開始所有帳戶皆為如此)。
當如上所述安裝時,MySQL Enterprise Audit 會保持安裝狀態,直到解除安裝。若要移除它,請執行位於您的 MySQL 安裝 share
目錄中的解除安裝腳本。此處的範例指定預設系統資料庫 mysql
。請針對您的系統進行適當的替換。
$> mysql -u root -p -D mysql < audit_log_filter_uninstall.sql
Enter password: (enter root password here)