#### 6.4.4.4 使用组件\_钥匙圈\_file 基于文件的密钥环组件

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

这`组件密钥环文件`密钥环组件将密钥环数据存储在服务器主机本地的文件中。

警告

对于加密密钥管理，`组件密钥环文件`和`组件密钥环加密文件`组件，以及`密钥环文件`和`密钥环加密文件`插件并非旨在作为法规遵从性解决方案。PCI、FIPS 等安全标准要求使用密钥管理系统来保护、管理和保护密钥库或硬件安全模块 (HSM) 中的加密密钥。

使用`组件密钥环文件`对于密钥库管理，您必须：

1.  编写一个清单，告诉服务器加载`组件密钥环文件`，如中所述[第 6.4.4.2 节，“密钥环组件安装”](keyring-component-installation.html).

2.  写一个配置文件`组件密钥环文件`，如此处所述。

    初始化时，`组件密钥环文件`读取全局配置文件，或与本地配置文件配对的全局配置文件：

-   组件尝试从安装组件库文件的目录（即服务器插件目录）读取其全局配置文件。

-   如果全局配置文件指示使用本地配置文件，则组件尝试从数据目录中读取其本地配置文件。

-   全局和本地配置文件虽然位于不同的目录，但文件名是`component_keyring_file.cnf`在这两个位置。

-   不存在配置文件是错误的。`组件密钥环文件`没有有效配置就无法初始化。

    本地配置文件允许设置多个服务器实例以使用`组件密钥环文件`，这样每个服务器实例的组件配置特定于给定的数据目录实例。这使得相同的密钥环组件可以与每个实例的不同数据文件一起使用。

`组件密钥环文件`配置文件具有以下属性：

-   配置文件必须采用有效的 JSON 格式。

-   配置文件允许这些配置项：

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

        如果`“读取本地配置”`项目与其他项目一起存在于全局配置文件中，组件检查`“读取本地配置”`项目值优先：

        -   如果值为`错误的`，组件处理全局配置文件中的其他项，忽略本地配置文件。

        -   如果值为`真的`，组件忽略全局配置文件中的其他项，并尝试读取本地配置文件。

    -   `“小路”`：项目值是一个字符串，用于命名用于存储密钥环数据的文件。该文件应使用绝对路径命名，而不是相对路径。该项目在配置中为必填项。如果没有指定，`组件密钥环文件`初始化失败。

    -   `“只读”`：项值表示keyring数据文件是否为只读。项目值为`真的`（只读）或`错误的`（读/写）。该项目在配置中为必填项。如果没有指定，`组件密钥环文件`初始化失败。

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

    给定前面的配置文件属性，配置`组件密钥环文件`，创建一个名为的全局配置文件`component_keyring_file.cnf`在目录中`组件密钥环文件`库文件已安装，并可选地创建一个本地配置文件，也命名为`component_keyring_file.cnf`，在数据目录中。以下说明假定一个名为的密钥环数据文件`/usr/local/mysql/keyring/component_keyring_file`将以读/写方式使用。

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

    ```
    {
      "path": "/usr/local/mysql/keyring/component_keyring_file",
      "read_only": false
    }
    ```

    在目录中创建这个文件`组件密钥环文件`库文件已安装。

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

    ```
    {
      "read_local_config": true
    }
    ```

    在目录中创建这个文件`组件密钥环文件`库文件已安装。

    本地文件如下所示：

    ```
    {
      "path": "/usr/local/mysql/keyring/component_keyring_file",
      "read_only": false
    }
    ```

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

    密钥环操作是事务性的：`组件密钥环文件`在写入操作期间使用备份文件以确保在操作失败时它可以回滚到原始文件。备份文件与数据文件同名，后缀为`.backup`.

`组件密钥环文件`支持构成标准 MySQL Keyring 服务接口的功能。这些函数执行的密钥环操作可在两个级别访问：

-   SQL接口：在SQL语句中，调用中描述的函数[第 6.4.4.14 节，“通用密钥环密钥管理功能”](keyring-functions-general-purpose.html).

-   C接口：在C语言代码中，调用描述的keyring服务函数[第 5.6.9.2 节，“密钥环服务”](keyring-service.html).

    示例（使用 SQL 接口）：


```
SELECT keyring_key_generate('MyKey', 'AES', 32);
SELECT keyring_key_remove('MyKey');
```

有关允许的键值特征的信息`组件密钥环文件`， 看[第 6.4.4.12 节，“支持的密钥环密钥类型和长度”](keyring-key-types.html).
