Documentation Home

6.4.4.1 密钥环插件安装

密钥环服务消费者需要安装密钥环插件。本节介绍如何安装您选择的密钥环插件。此外,有关安装插件的一般信息,请参阅第 5.5.1 节,“安装和卸载插件”

如果您打算将密钥环功能与所选的密钥环插件结合使用,请在安装该插件后使用 第 6.4.4.8 节“通用密钥环密钥管理功能”中的说明安装这些功能。

笔记

一次只能启用一个密钥环插件。不支持启用多个密钥环插件,结果可能与预期不同。

MySQL 提供了这些密钥环插件选项:

  • keyring_file:将密钥环数据存储在服务器主机的本地文件中。在 MySQL Community Edition 和 MySQL Enterprise Edition 发行版中可用。

  • keyring_encrypted_file:将密钥环数据存储在服务器主机本地的加密、受密码保护的文件中。在 MySQL 企业版发行版中可用。

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

  • keyring_aws:与作为密钥生成后端的 Amazon Web Services Key Management Service 通信,并使用本地文件进行密钥存储。在 MySQL 企业版发行版中可用。

为了被服务器使用,插件库文件必须位于MySQL插件目录(由plugin_dir系统变量命名的目录)中。plugin_dir如有必要,通过在服务器启动时 设置值来配置插件目录位置 。

密钥环插件必须在服务器启动序列的早期加载,以便组件可以在它们自己的初始化期间根据需要访问它。例如, InnoDB存储引擎使用密钥环进行表空间加密,因此密钥环插件必须在InnoDB初始化之前加载并可用。

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

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

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

[mysqld]
early-plugin-load=keyring_file.so
重要的

在 MySQL 5.7.11 中,默认 --early-plugin-load值为keyring_file插件库文件的名称,导致默认加载该插件。在 MySQL 5.7.12 及更高版本中,默认 --early-plugin-load值为空;要加载keyring_file插件,您必须明确指定带有命名 keyring_file插件库文件的值的选项。

InnoDBInnoDB表空间加密要求在初始化之前加载要使用的密钥环插件 ,因此默认--early-plugin-load 值的这种更改引入了从 5.7.11 升级到 5.7.12 或更高版本的不兼容性。拥有加密 InnoDB表空间的管理员必须采取明确的措施以确保继续加载密钥环插件:使用 --early-plugin-load命名插件库文件的选项启动服务器。

在启动服务器之前,请检查您选择的密钥环插件的注释以获取特定于该插件的配置说明:

执行任何特定于插件的配置后,启动服务器。通过检查 INFORMATION_SCHEMA.PLUGINS表或使用SHOW PLUGINS语句来验证插件安装(请参阅第 5.5.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-addINSTALL PLUGINInnoDB

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

  • 使用安装的插件INSTALL PLUGINmysql.plugin系统表中注册并自动加载以供后续服务器重新启动。但是,因为mysql.plugin是一个 表,任何以它命名的插件只有在初始化 InnoDB后才能在启动时加载 。InnoDB

如果组件尝试访问密钥环服务时没有密钥环插件可用,则该组件不能使用该服务。因此,组件可能无法初始化或可能会使用有限的功能进行初始化。例如,如果 InnoDB在初始化时发现有加密的表空间,它会尝试访问密钥环。如果密钥环不可用, InnoDB则只能访问未加密的表空间。为确保也InnoDB可以访问加密的表空间,请使用 --early-plugin-load加载密钥环插件。