Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  Keyring Plugin Installation

8.4.4.3 密钥环插件安装

密钥环服务消费者需要安装密钥环组件或插件:

Note

一次只能启用一个密钥环组件或插件。启用多个密钥环组件或插件是不支持的,结果可能不如预期。

如果您需要支持持久系统变量的安全存储,而不是密钥环插件,请在 MySQL 服务器实例上启用密钥环组件。请参阅持久敏感系统变量

MySQL 提供以下密钥环插件选择:

  • keyring_file(已弃用):在服务器主机的本地文件中存储密钥环数据。可在 MySQL 社区版和 MySQL 企业版发行版中使用。有关安装替换该插件的组件的说明,请参阅第 8.4.4.2 节,“密钥环组件安装”

  • keyring_encrypted_file(已弃用):在服务器主机的本地加密、密码保护文件中存储密钥环数据。可在 MySQL 企业版发行版中使用。有关安装替换该插件的组件的说明,请参阅第 8.4.4.2 节,“密钥环组件安装”

  • keyring_okv:用于 KMIP 1.1 的插件,适用于 KMIP 兼容的后端密钥环存储产品,如 Oracle Key Vault 和 Gemalto SafeNet KeySecure 设备。可在 MySQL 企业版发行版中使用。

  • keyring_aws:与 Amazon Web Services 密钥管理服务通信,以生成密钥,并使用本地文件存储密钥。可在 MySQL 企业版发行版中使用。

  • keyring_hashicorp:与 HashiCorp Vault 通信,以存储密钥。可在 MySQL 企业版发行版中使用。

  • keyring_oci(已弃用):与 Oracle Cloud Infrastructure Vault 通信,以存储密钥。请参阅第 8.4.4.12 节,“使用 Oracle Cloud Infrastructure Vault 密钥环插件”

要使插件库文件可供服务器使用,必须将其位于 MySQL 插件目录中(由plugin_dir系统变量命名的目录)。如果必要,请在服务器启动时设置plugin_dir的值。

密钥环组件或插件必须在服务器启动序列的早期加载,以便其他组件可以在初始化时访问它。例如,InnoDB 存储引擎使用密钥环来加密表空间,因此在 InnoDB 初始化之前必须加载密钥环组件或插件。

每个密钥环插件的安装类似。以下说明描述如何安装 keyring_file。要使用不同的密钥环插件,请将其名称替换为 keyring_file

插件库文件的基本名称是 keyring_file。文件名后缀因平台而异(例如,Unix 和 Unix-like 系统上的 .so,Windows 上的 .dll)。

要加载插件,请使用 --early-plugin-load 选项来命名包含插件的库文件。例如,在平台上插件库文件后缀为 .so 的情况下,请在服务器的 my.cnf 文件中使用以下行,根据需要调整 .so 后缀:

[mysqld]
early-plugin-load=keyring_file.so

在启动服务器之前,请检查所选keyring插件的笔记,以获取该插件特定的配置说明:

执行任何插件特定配置后,启动服务器。通过检查信息模式PLUGINS表或使用SHOW PLUGINS语句(见第7.6.2节,“获取服务器插件信息”)。例如:

mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS
       FROM INFORMATION_SCHEMA.PLUGINS
       WHERE PLUGIN_NAME LIKE 'keyring%';
+--------------+---------------+
| PLUGIN_NAME  | PLUGIN_STATUS |
+--------------+---------------+
| keyring_file | ACTIVE        |
+--------------+---------------+

如果插件无法初始化,请检查服务器错误日志以获取诊断信息。

插件可以通过其他方法加载,而不是--early-plugin-load,例如--plugin-load--plugin-load-add选项或INSTALL PLUGIN语句。然而,使用这些方法加载的keyring插件可能太晚在服务器启动序列中不可用,以致于某些组件无法使用keyring,例如InnoDB

  • 使用--plugin-load--plugin-load-add加载插件是在InnoDB初始化之后。

  • 使用INSTALL PLUGIN安装的插件将注册在mysql.plugin系统表中,并在后续服务器重新启动时自动加载。然而,因为mysql.plugin是一个InnoDB表,因此任何在其中命名的插件只能在启动时加载InnoDB初始化之后。

如果在组件尝试访问keyring服务时没有可用的keyring组件或插件,该服务将无法被该组件使用。结果,该组件可能无法初始化或只能以有限的功能初始化。例如,如果InnoDB在初始化时发现有加密表空间,它将尝试访问keyring。如果keyring不可用,InnoDB只能访问未加密的表空间。为了确保InnoDB可以访问加密表空间,请使用--early-plugin-load加载keyring插件。