本節說明如何安裝或解除安裝 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 Cluster 的情況下使用 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)