文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  金鑰環元件安裝

8.4.4.2 金鑰環元件安裝

金鑰環服務取用者需要安裝金鑰環元件或外掛程式

注意

一次只能啟用一個金鑰環元件或外掛程式。不支援啟用多個金鑰環元件或外掛程式,而且結果可能不如預期。

MySQL 提供這些金鑰環元件選擇

  • component_keyring_file:將金鑰環資料儲存在伺服器主機本機的檔案中。適用於 MySQL 社群版和 MySQL 企業版發行版本。

  • component_keyring_encrypted_file:將金鑰環資料儲存在伺服器主機本機的加密、受密碼保護的檔案中。適用於 MySQL 企業版發行版本。

  • component_keyring_oci:將金鑰環資料儲存在 Oracle Cloud Infrastructure Vault 中。適用於 MySQL 企業版發行版本。

為了讓伺服器可以使用元件,元件程式庫檔案必須位於 MySQL 外掛程式目錄中(由plugin_dir系統變數命名的目錄)。如有必要,請在伺服器啟動時設定plugin_dir的值,以設定外掛程式目錄位置。

金鑰環元件或外掛程式必須在伺服器啟動順序中提早載入,以便其他元件可以在它們自己的初始化期間視需要存取它。例如,InnoDB 儲存引擎會使用金鑰環進行資料表空間加密,因此必須在 InnoDB 初始化之前載入並提供金鑰環元件或外掛程式。

注意

如果需要支援用於保存的系統變數值的安全儲存,則必須在 MySQL 伺服器執行個體上啟用金鑰環元件。金鑰環外掛程式不支援此功能。請參閱保存敏感系統變數

與金鑰環外掛程式不同,金鑰環組件不是使用 --early-plugin-load 伺服器選項載入,也不是使用系統變數設定。相反地,伺服器在啟動時會使用一份 manifest 來決定要載入哪個金鑰環組件,而載入的組件在初始化時會參考自己的設定檔。因此,要安裝金鑰環組件,您必須

  1. 撰寫一份 manifest,告訴伺服器要載入哪個金鑰環組件。

  2. 為該金鑰環組件撰寫一份設定檔。

安裝金鑰環組件的第一步是撰寫一份 manifest,指出要載入哪個組件。在啟動期間,伺服器會讀取全域 manifest 檔案,或是與本機 manifest 檔案配對的全域 manifest 檔案。

  • 伺服器會嘗試從伺服器安裝所在的目錄讀取其全域 manifest 檔案。

  • 如果全域 manifest 檔案指示要使用本機 manifest 檔案,伺服器會嘗試從資料目錄讀取其本機 manifest 檔案。

  • 雖然全域和本機 manifest 檔案位於不同的目錄中,但兩個位置的檔案名稱都是 mysqld.my

  • 如果 manifest 檔案不存在,並不是錯誤。在這種情況下,伺服器不會嘗試載入與該檔案相關的組件。

本機 manifest 檔案允許設定多個伺服器執行個體的組件載入,使每個伺服器執行個體的載入指示都特定於給定的資料目錄執行個體。這讓不同的 MySQL 執行個體可以使用不同的金鑰環組件。

伺服器 manifest 檔案具有以下特性

  • manifest 檔案必須是有效的 JSON 格式。

  • manifest 檔案允許以下項目

    • "read_local_manifest":此項目僅允許在全域 manifest 檔案中使用。如果該項目不存在,伺服器只會使用全域 manifest 檔案。如果該項目存在,其值為 truefalse,表示伺服器是否應從本機 manifest 檔案讀取組件載入資訊。

      如果 "read_local_manifest" 項目與其他項目一起出現在全域 manifest 檔案中,伺服器會先檢查 "read_local_manifest" 項目值。

      • 如果值為 false,伺服器會處理全域 manifest 檔案中的其他項目,並忽略本機 manifest 檔案。

      • 如果值為 true,伺服器會忽略全域 manifest 檔案中的其他項目,並嘗試讀取本機 manifest 檔案。

    • "components":此項目表示要載入哪個組件。該項目值是一個字串,指定有效的組件 URN,例如 "file://component_keyring_file"。組件 URN 以 file:// 開頭,並表示位於 MySQL 外掛程式目錄中實作該組件的程式庫檔案的基本名稱。

  • 伺服器對 manifest 檔案的存取權限應為唯讀。例如,mysqld.my 伺服器 manifest 檔案可能由 root 擁有,並且對 root 具有讀/寫權限,但對用於執行 MySQL 伺服器的帳戶應為唯讀。如果在啟動期間發現 manifest 檔案對該帳戶具有讀/寫權限,伺服器會將警告寫入錯誤日誌,建議將該檔案設為唯讀。

  • 資料庫管理員有責任建立要使用的任何 manifest 檔案,並確保其存取模式和內容正確。如果發生錯誤,伺服器啟動會失敗,管理員必須修正伺服器錯誤日誌中指示的任何問題。

鑑於上述 manifest 檔案特性,要設定伺服器載入 component_keyring_file,請在 mysqld 安裝目錄中建立一個名為 mysqld.my 的全域 manifest 檔案,並且選擇性地在資料目錄中建立一個也名為 mysqld.my 的本機 manifest 檔案。以下說明描述如何載入 component_keyring_file。要載入不同的金鑰環組件,請將其名稱替換為 component_keyring_file

  • 要僅使用全域 manifest 檔案,檔案內容如下所示

    {
      "components": "file://component_keyring_file"
    }

    mysqld 安裝所在的目錄中建立此檔案。

  • 或者,要使用一對全域和本機 manifest 檔案,全域檔案看起來像這樣

    {
      "read_local_manifest": true
    }

    mysqld 安裝所在的目錄中建立此檔案。

    本機檔案看起來像這樣

    {
      "components": "file://component_keyring_file"
    }

    在資料目錄中建立此檔案。

設定好 manifest 後,請繼續設定金鑰環組件。為此,請查看您選擇的金鑰環組件的說明,以取得該組件特定的設定指示。

在執行任何組件特定的設定後,啟動伺服器。透過檢查 Performance Schema keyring_component_status 表格來驗證組件安裝。

mysql> SELECT * FROM performance_schema.keyring_component_status;
+---------------------+-------------------------------------------------+
| STATUS_KEY          | STATUS_VALUE                                    |
+---------------------+-------------------------------------------------+
| Component_name      | component_keyring_file                          |
| Author              | Oracle Corporation                              |
| License             | GPL                                             |
| Implementation_name | component_keyring_file                          |
| Version             | 1.0                                             |
| Component_status    | Active                                          |
| Data_file           | /usr/local/mysql/keyring/component_keyring_file |
| Read_only           | No                                              |
+---------------------+-------------------------------------------------+

Component_status 值為 Active 表示組件已成功初始化。

如果無法載入組件,伺服器啟動會失敗。請檢查伺服器錯誤日誌以取得診斷訊息。如果組件載入但由於設定問題而無法初始化,伺服器會啟動,但 Component_status 值為 Disabled。請檢查伺服器錯誤日誌,修正設定問題,並使用 ALTER INSTANCE RELOAD KEYRING 陳述式重新載入設定。

金鑰環組件應僅使用 manifest 檔案載入,而非使用 INSTALL COMPONENT 陳述式。使用該陳述式載入的金鑰環組件在某些使用金鑰環的組件(例如 InnoDB)的伺服器啟動序列中可能過晚才可用,因為它們是在 mysql.component 系統表格中註冊,並在後續伺服器重新啟動時自動載入。但是 mysql.component 是一個 InnoDB 表格,因此其中命名的任何組件都只能在 InnoDB 初始化後才能在啟動期間載入。

如果當組件嘗試存取金鑰環服務時,沒有可用的金鑰環組件或外掛程式,則該組件無法使用該服務。因此,該組件可能無法初始化,或者可能以有限的功能初始化。例如,如果 InnoDB 在初始化時發現存在加密的表格空間,它會嘗試存取金鑰環。如果金鑰環不可用,InnoDB 只能存取未加密的表格空間。