#### 6.4.4.2 密钥环组件安装

[](<>)[](<>)[](<>)[](<>)

密钥环服务消费者要求安装密钥环组件或插件：

-   要使用密钥环组件，请从此处的说明开始。

-   要改用密钥环插件，请从[第 6.4.4.3 节，“密钥环插件安装”](keyring-plugin-installation.html).

-   如果您打算将密钥环功能与所选的密钥环组件或插件一起使用，请在安装该组件或插件后按照中的说明安装这些功能[第 6.4.4.14 节，“通用密钥环密钥管理功能”](keyring-functions-general-purpose.html).

笔记

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

MySQL 提供了这些密钥环组件选择：

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

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

    要被服务器使用，组件库文件必须位于 MySQL 插件目录（由[`插件目录`](server-system-variables.html#sysvar_plugin_dir)系统变量）。如有必要，通过设置值来配置插件目录位置[`插件目录`](server-system-variables.html#sysvar_plugin_dir)在服务器启动时。

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

    与密钥环插件不同，密钥环组件不使用[`--early-plugin-load`](server-options.html#option_mysqld_early-plugin-load)服务器选项或使用系统变量配置。相反，服务器使用清单确定在启动期间要加载哪个密钥环组件，并且加载的组件在初始化时会查阅自己的配置文件。因此，要安装密钥环组件，您必须：

1.  编写一个清单，告诉服务器要加载哪个密钥环组件。

2.  为该密钥环组件编写一个配置文件。

    安装密钥环组件的第一步是编写一个清单，指明要加载的组件。在启动期间，服务器读取全局清单文件或与本地清单文件配对的全局清单文件：

-   服务器尝试从安装服务器的目录中读取其全局清单文件。

-   如果全局清单文件指示使用本地清单文件，则服务器尝试从数据目录中读取其本地清单文件。

-   虽然全局和本地清单文件位于不同的目录中，但文件名是`mysqld.my`在这两个位置。

-   清单文件不存在并不是错误。在这种情况下，服务器不会尝试加载与文件关联的组件。

    本地清单文件允许为服务器的多个实例设置组件加载，以便每个服务器实例的加载指令特定于给定的数据目录实例。这使得不同的 MySQL 实例可以使用不同的密钥环组件。

    服务器清单文件具有以下属性：

-   清单文件必须采用有效的 JSON 格式。

-   清单文件允许以下项目：

    -   `“read_local_manifest”`: 此项仅在全局清单文件中允许。如果该项不存在，则服务器仅使用全局清单文件。如果该项目存在，则其值为`真的`要么`错误的`，指示服务器是否应该从本地清单文件中读取组件加载信息。

        如果`“read_local_manifest”`项目与其他项目一起存在于全局清单文件中，服务器检查`“read_local_manifest”`项目值优先：

        -   如果值为`错误的`，服务器处理全局清单文件中的其他项并忽略本地清单文件。

        -   如果值为`真的`，服务器会忽略全局清单文件中的其他项，并尝试读取本地清单文件。

    -   `“成分”`：此项表示要加载哪个组件。item 值是一个字符串，它指定了一个有效的组件 URN，例如`“文件：//component_keyring_file”`.组件 URN 以`文件：//`并指示位于实现该组件的 MySQL 插件目录中的库文件的基本名称。

-   服务器对清单文件的访问应该是只读的。例如，一个`mysqld.my`服务器清单文件可能由`根`并被读/写`根`, 但应该只读到用于运行 MySQL 服务器的帐户。如果在启动期间发现清单文件可以读/写到该帐户，则服务器将警告写入错误日志，建议将该文件设为只读。

-   数据库管理员有责任创建任何要使用的清单文件，并确保它们的访问模式和内容是正确的。如果发生错误，服务器启动将失败，管理员必须更正服务器错误日志中诊断所指示的任何问题。

    给定前面的清单文件属性，配置服务器加载`组件密钥环文件`，创建一个名为的全局清单文件`mysqld.my`在里面[**mysqld**](mysqld.html)安装目录，并可选地创建一个本地清单文件，也命名为`mysqld.my`，在数据目录中。以下说明描述了如何加载`组件密钥环文件`.要加载不同的密钥环组件，请将其名称替换为`组件密钥环文件`.

-   要仅使用全局清单文件，文件内容如下所示：

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

    在目录中创建这个文件[**mysqld**](mysqld.html)已安装。

-   或者，要使用全局和本地清单文件对，全局文件如下所示：

    ```
    {
      "read_local_manifest": true
    }
    ```

    在目录中创建这个文件[**mysqld**](mysqld.html)已安装。

    本地文件如下所示：

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

    在数据目录中创建此文件。

    清单就绪后，继续配置密钥环组件。为此，请查看您选择的密钥环组件的注释以获取特定于该组件的配置说明：

-   `组件密钥环文件`：[第 6.4.4.4 节，“使用组件\_钥匙圈\_file 基于文件的密钥环组件”](keyring-file-component.html).

-   `组件密钥环加密文件`：[第 6.4.4.5 节，“使用组件\_钥匙圈\_加密的\_文件加密的基于文件的密钥环组件”](keyring-encrypted-file-component.html).

    执行任何特定于组件的配置后，启动服务器。通过检查性能模式来验证组件安装[`keyring_component_status`](performance-schema-keyring-component-status-table.html)桌子：


```
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                                              |
+---------------------+-------------------------------------------------+
```

一种`组件状态`的价值`积极的`表示组件初始化成功。

如果无法加载组件，则服务器启动失败。检查服务器错误日志以获取诊断消息。如果组件加载但由于配置问题而无法初始化，则服务器启动但`组件状态`值为`已禁用`.检查服务器错误日志，更正配置问题，然后使用[`更改实例重新加载密钥环`](alter-instance.html#alter-instance-reload-keyring)语句重新加载配置。

密钥环组件只能使用清单文件来加载，而不是使用[`安装组件`](install-component.html)陈述。对于某些使用该密钥环的组件，使用该语句加载的密钥环组件在服务器启动序列中可能为时已晚，例如`InnoDB`, 因为他们注册在`mysql.component`系统表并自动加载以供后续服务器重新启动。但`mysql.component`是一个`InnoDB`表，因此其中命名的任何组件只能在启动期间加载`InnoDB`初始化。

如果组件尝试访问密钥环服务时没有可用的密钥环组件或插件，则该组件无法使用该服务。因此，该组件可能无法初始化或初始化时功能有限。例如，如果`InnoDB`初始化时发现有加密表空间，尝试访问keyring。如果密钥环不可用，`InnoDB`只能访问未加密的表空间。
