作者:Gopal Shankar 译:徐轶韬
MySQL 5.7.11引入了InnoDB表空间加密,该加密启用了对每表文件表空间的支持,此博客中将讨论此功能。
在MySQL 8.0.13中,引入了通用表空间的加密。
为了提高加密处理的可用性,MySQL 8.0.16添加了几个功能,对模式,通用表空间或整个MySQL系统中的表启用,禁用和强制执行表加密。这些功能允许数据库管理员进行更精细的控制。以下各节通过示例讨论其中一些功能
1.加密发生在表空间级别
MySQL通过加密文件系统块,对表在存储级别进行加密。表空间不能混合使用加密和未加密的块。因此,表空间是未加密的或已加密的。MySQL对用户表支持两种类型的表空间。缺省值为file-per-table,每个表存储在单独的表空间中。第二种类型是通用表空间,可以在一个表空间中存储多个表。因此,通用表空间不能同时包含未加密表和已加密表。在MySQL系统中,可以在多个级别上控制加密。加密发生在存储层。
用例1:我希望对系统中的所有表进行加密
我希望对系统中的所有表进行加密。这可以通过系统范围的配置设置default_table_encryption轻松实现。如果配置default_table_encryption ='y',所有新表都将被加密。在上图中,将在系统级别进行配置。有关如何检查的信息,请参见第2节。用例2:我希望对模式中的所有表进行加密
我有一个模式,希望对模式中所有表进行加密。创建模式时,可以设置默认的加密属性。之后在模式中创建的所有表都将继承该模式的默认加密设置。从上图可以看出,如果为“ db1”配置了加密,则所有表都将对“file-per-table”表空间(例如“ ts1”)和通用表空间(例如“ ts2”)进行加密。有关更多详细信息,请参见第3和第4节。用例3: