密匙环服务使用者要求安装密匙环组件或插件:
要使用密匙环组件,请从这里的说明开始。
要使用密匙环插件,请从第6.4.4.3节“密匙环插件安装”.
如果您打算将密匙环函数与所选的密匙环组件或插件一起使用,请在安装该组件或插件后使用第6.4.4.14节“通用密钥环密钥管理功能”.
一次只能启用一个密匙环组件或插件。不支持启用多个密匙环组件或插件,结果可能与预期不同。
MySQL提供了以下密匙环组件选择:
component_keyring_file
:将密匙环数据保存在服务器本地的文件中。在MySQL社区版和MySQL企业版发行版中可用。component_keyring_encrypted_file
:将密匙环数据保存在服务器主机本地的一个加密的、有密码保护的文件中。在MySQL企业版发行版中可用。
要使服务器可用,组件库文件必须位于MySQL插件目录中(该目录由plugin_dir
系统变量)。如果有必要,可以通过设置的值来配置插件目录位置plugin_dir
在服务器启动。
密匙环组件或插件必须在服务器启动序列的早期加载,以便其他组件在自己的初始化过程中根据需要访问它。例如,InnoDB
存储引擎使用密匙环对表空间进行加密,因此密匙环组件或插件必须在此之前加载并可用InnoDB
初始化。
与密匙环插件不同,密匙环组件不使用——early-plugin-load
服务器选项或使用系统变量配置。相反,服务器使用清单确定在启动期间加载哪个密匙环组件,加载的组件在初始化时参考自己的配置文件。因此,要安装密匙环组件,必须:
编写一个清单,告诉服务器要加载哪个密匙环组件。
为该密匙环组件编写一个配置文件。
安装密匙环组件的第一步是编写指示要加载哪个组件的清单。在启动期间,服务器要么读取全局清单文件,要么读取与本地清单文件配对的全局清单文件:
服务器试图从安装服务器的目录读取其全局清单文件。
如果全局清单文件指示使用本地清单文件,则服务器尝试从数据目录读取其本地清单文件。
尽管全局和本地清单文件位于不同的目录中,但文件名为
mysqld.my
在这两个位置。清单文件不存在并不是错误。在这种情况下,服务器不会尝试加载与该文件相关的组件。
本地清单文件允许为服务器的多个实例设置组件加载,这样每个服务器实例的加载指令都特定于给定的数据目录实例。这使得不同的MySQL实例可以使用不同的密匙环组件。
服务器清单文件具有以下属性:
清单文件必须是有效的JSON格式。
清单文件允许以下项目:
“read_local_manifest”
:仅在全局清单文件中允许此项。如果项目不存在,服务器只使用全局清单文件。如果项目存在,则其值为真正的
或假
,指示服务器是否应该从本地清单文件读取组件加载信息。如果
“read_local_manifest”
项与其他项一起出现在全局清单文件中时,服务器将检查“read_local_manifest”
项目价值:如果值为
假
,服务器处理全局清单文件中的其他项,忽略本地清单文件。如果值为
真正的
,服务器忽略全局清单文件中的其他项,并尝试读取本地清单文件。
“组件”
:该项表示加载哪个组件。项目值是一个指定有效组件URN的字符串,例如“文件:/ / component_keyring_file”
.组件URN开始于文件:/ /
表示库文件的基本名称,该库文件位于实现该组件的MySQL插件目录中。
服务器对清单文件的访问应该是只读的。例如,一个
mysqld.my
服务器清单文件可能属于根
并被读/写根
,但应该只读到用于运行MySQL服务器的帐户。如果在启动期间发现清单文件可对该帐户进行读写,服务器将向错误日志写入警告,建议将该文件设置为只读。数据库管理员负责创建要使用的清单文件,并确保它们的访问模式和内容是正确的。如果发生错误,则服务器启动失败,管理员必须纠正服务器错误日志中诊断所指出的任何问题。
给定前面的清单文件属性,配置服务器来加载component_keyring_file
,创建一个全局清单文件mysqld.my
在mysqld安装目录,并可选地创建一个本地清单文件,也命名为mysqld.my
,在data目录下。下面的说明描述了如何加载component_keyring_file
.若要加载不同的密匙环组件,请将其名称替换为component_keyring_file
.
清单就绪后,继续配置密匙环组件。要做到这一点,请查看所选密匙环组件的注释,以获得特定于该组件的配置说明:
component_keyring_file
:第6.4.4.4节,“使用component_keyring_file基于文件的Keyring组件”.component_keyring_encrypted_file
:第6.4.4.5节,“使用component_keyring_encrypted_file基于加密文件的密匙环组件”.
在执行任何特定于组件的配置之后,启动服务器。通过检查性能架构来验证组件的安装keyring_component_status
表:
SELECT * FROM performance_schema.keyring_component_status;+---------------------+-------------------------------------------------+ | STATUS_KEY | STATUS_VALUE | +---------------------+-------------------------------------------------+ | 甲骨文公司作者Component_name | component_keyring_file | | | | | |许可证GPL | | Implementation_name | component_keyring_file | |版本| 1.0 | | Component_status活动| | | Data_file | /usr/local/mysql/keyring/component_keyring_file | | Read_only | |+---------------------+-------------------------------------------------+
一个Component_status
的价值活跃的
指示组件初始化成功。
如果无法加载组件,则服务器启动失败。检查服务器错误日志以获得诊断消息。如果加载了组件,但由于配置问题而初始化失败,则服务器启动Component_status
值是禁用
.检查服务器错误日志,纠正配置问题,并使用更改实例重新加载密匙环
语句重新加载配置。
应仅通过使用清单文件加载密匙环组件,而不是通过使用安装组件
声明。对于使用密匙环的某些组件,使用该语句加载的密匙环组件可能在服务器启动序列中太晚才可用,例如InnoDB
,因为它们注册在10bet靠谱mysql.component
系统表,并为后续服务器重启自动加载。但10bet靠谱mysql.component
是一个InnoDB
表,因此其中命名的任何组件只能在之后的启动过程中加载InnoDB
初始化。
当一个组件试图访问密匙环服务时,如果没有可用的密匙环组件或插件,该组件就不能使用该服务。因此,组件可能初始化失败,或者初始化时功能有限。例如,如果InnoDB
当它初始化时发现有加密的表空间,它尝试访问密匙环。如果密匙环不可用,InnoDB
只能访问未加密的表空间。