#### 6.4.4.7 使用密钥环\_加密\_文件加密的基于文件的密钥环插件

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

笔记

这`密钥环加密文件`plugin 是商业产品 MySQL 企业版中包含的扩展。要了解有关商业产品的更多信息，请参阅<https://www.mysql.com/products/>.

这`密钥环加密文件`密钥环插件将密钥环数据存储在服务器主机本地的加密的、受密码保护的文件中。

警告

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

安装`密钥环加密文件`, 使用中的一般说明[第 6.4.4.3 节，“密钥环插件安装”](keyring-plugin-installation.html)，以及特定于的配置信息`密钥环加密文件`在这里找到。

要在服务器启动过程中可用，`密钥环加密文件`必须使用[`--早期插件加载`](server-options.html#option_mysqld_early-plugin-load)选项要指定加密密钥环数据文件的密码，请设置[`密钥环加密文件密码`](keyring-system-variables.html#sysvar_keyring_encrypted_file_password)系统变量。（密码是强制性的；如果在服务器启动时未指定，`密钥环加密文件`初始化失败。）这个[`密钥环加密文件数据`](keyring-system-variables.html#sysvar_keyring_encrypted_file_data)系统变量（可选）配置用户使用的文件的位置`密钥环加密文件`数据存储插件。默认值是特定于平台的。要显式配置文件位置，请在启动时设置变量值。例如，在服务器中使用这些行`我的cnf`文件，调整`所以`根据需要为您的平台添加后缀和文件位置，并替换您选择的密码：

```
[mysqld]
early-plugin-load=keyring_encrypted_file.so
keyring_encrypted_file_data=/usr/local/mysql/mysql-keyring/keyring-encrypted
keyring_encrypted_file_password=password
```

因为`我的cnf`文件存储一个密码，如图所示写入时，它应该具有限制模式，并且只能由用于运行MySQL服务器的帐户访问。

密钥环操作是事务性的：`密钥环加密文件`插件在写操作期间使用备份文件，以确保在操作失败时可以回滚到原始文件。备份文件的名称与[`密钥环加密文件数据`](keyring-system-variables.html#sysvar_keyring_encrypted_file_data)后缀为的系统变量`备份`.

有关用于配置的系统变量的更多信息`密钥环加密文件`插件，看[第6.4.4.18节，“钥匙圈系统变量”](keyring-system-variables.html).

为确保仅当存在正确的密钥环存储文件时才刷新密钥，`密钥环加密文件`在文件中存储密钥环的SHA-256校验和。在更新文件之前，插件会验证它是否包含预期的校验和。此外`密钥环加密文件`在写入文件之前使用AES加密文件内容，在读取文件之后解密文件内容。

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

-   SQL接口：在SQL语句中，调用[第6.4.4.14节，“通用钥匙圈钥匙管理功能”](keyring-functions-general-purpose.html).

-   C接口：在C语言代码中，调用[第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).
