Keyring插件安装
密钥环服务使用者需要安装密钥环插件。MySQL提供了以下插件选择:
keyring_file
:一个将密钥环数据存储在服务器主机本地文件中的插件。在所有MySQL发行版中均可用。keyring_encrypted_file
:一个插件,用于将密钥环数据存储在服务器主机本地的加密文件中。在MySQL企业版发行版中可用。keyring_okv
:使用KMIP兼容的后端密钥环存储产品(例如Oracle Key Vault和Gemalto SafeNet KeySecure Appliance)的插件。在MySQL企业版发行版中可用。keyring_aws
:与Amazon Web Services密钥管理服务进行通信的插件,作为密钥生成的后端,并使用本地文件存储密钥。在MySQL企业版发行版中可用。keyring_hashicorp
:与HashiCorp Vault通信以进行后端存储的插件。在MySQL企业版发行版中可用。
本节介绍如何安装您选择的密钥环插件。有关安装插件的一般信息,请参见“MySQL服务器插件”。
如果您打算结合使用密钥环用户定义功能(UDF)和密钥环插件,请按照“通用密钥环密钥管理功能”中的说明在密钥环安装后安装UDF 。
要由服务器使用,插件库文件必须位于MySQL插件目录(由plugin_dir
系统变量命名的目录)中。如有必要,通过设置plugin_dir
服务器启动时的值来配置插件目录位置。
每个密钥环插件的安装都类似。以下说明使用keyring_file
。使用其他密钥环插件的用户可以将其名称替换为keyring_file
。
该keyring_file
插件的库文件基本名称是keyring_file
。每个平台的文件名后缀都不同(例如,.so
对于Unix和类似Unix的系统,.dll
对于Windows)。
注意一次只能启用一个Keyring插件。不支持启用多个keyring插件,结果可能与预期不符。
密钥环插件必须在服务器启动顺序的早期加载,以便服务器组件可以在其自己的初始化期间根据需要对其进行访问。例如,InnoDB
存储引擎将密钥环用于表空间加密,因此密钥环插件必须在InnoDB
初始化之前加载并可用。
要加载插件,请使用--early-plugin-load
选项来命名包含它的插件库文件。例如,在插件库文件后缀为的平台上.so
,请在服务器my.cnf
文件中使用以下几行(.so
根据需要为您的平台调整后缀):
[mysqld] early-plugin-load=keyring_file.so
启动服务器之前,请参见所选密钥环插件的说明,以参见它是否允许或需要其他配置:
- 对于
keyring_file
:“使用keyring_file基于文件的插件”。 - 对于
keyring_okv
:“使用keyring_okv KMIP插件”。 - 对于
keyring_aws
:“使用keyring_aws Amazon Web Services密钥环插件” - 适用于
keyring_hashicorp
:“使用HashiCorp Vault密匙环插件”
执行任何特定于插件的配置后,请验证插件安装。在运行MySQL服务器的情况下,检查INFORMATION_SCHEMA.PLUGINS
表或使用以下SHOW PLUGINS
语句(请参见“获取服务器插件信息”)。例如:
mysql>SELECT PLUGIN_NAME, PLUGIN_STATUSFROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE 'keyring%'; +-------------- +--------------- + | PLUGIN_NAME | PLUGIN_STATUS | +-------------- +--------------- + | keyring_file | ACTIVE | +-------------- +--------------- +
如果插件未能初始化,请检查服务器错误日志以获取诊断消息。
如果服务器组件尝试访问密钥环服务时没有密钥环插件可用,则该组件将无法使用该服务。结果,该组件可能无法初始化或可能会以有限的功能进行初始化。例如,如果InnoDB
在初始化时发现有加密的表空间,它将尝试访问密钥环。如果密钥环不可用,则InnoDB
只能访问未加密的表空间。为了确保也InnoDB
可以访问加密的表空间,请使用--early-plugin-load
加载密钥环插件。
可以通过其他方法(例如--plugin-load
or --plugin-load-add
选项或INSTALL PLUGIN
语句)加载插件。但是,对于某些服务器组件,使用这些方法加载的密钥环插件可能在服务器启动顺序中太晚才可用,例如InnoDB
:
- 使用
--plugin-load
或--plugin-load-add
在InnoDB
初始化后进行插件加载。 - 使用安装的插件
INSTALL PLUGIN
在mysql.plugin
系统表中注册,并自动加载以用于随后的服务器重启。但是,由于mysql.plugin
是InnoDB
表,因此其中命名的所有插件仅在InnoDB
初始化后才能在启动期间加载。