文档主页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  MySQL 9.0 常见问题解答  /  MySQL 9.0 常见问题解答:InnoDB 数据休眠加密

A.17 MySQL 9.0 常见问题解答:InnoDB 数据休眠加密

A.17.1. 授权查看数据的用户是否会解密数据?
A.17.2. InnoDB 数据休眠加密会带来什么开销?
A.17.3. InnoDB 数据休眠加密使用哪些加密算法?
A.17.4. 是否可以将第三方加密算法替换为 InnoDB 数据休眠加密功能提供的算法?
A.17.5. 可以加密索引列吗?
A.17.6. InnoDB 数据休眠加密支持哪些数据类型和数据长度?
A.17.7. 数据在网络上是否保持加密?
A.17.8. 数据库内存中是否包含明文或加密数据?
A.17.9. 如何知道哪些数据需要加密?
A.17.10. InnoDB 数据休眠加密与 MySQL 已提供的加密函数有何不同?
A.17.11. 可移植表空间功能是否支持 InnoDB 数据休眠加密?
A.17.12. 压缩是否支持 InnoDB 数据休眠加密?
A.17.13. 我可以使用 mysqldump 操作加密表吗?
A.17.14. 如何更改(轮换、重新加钥)主加密密钥?
A.17.15. 如何将数据从明文 InnoDB 表空间迁移到加密的 InnoDB 表空间?

A.17.1.

授权查看数据的用户是否会解密数据?

是的。 InnoDB 数据休眠加密旨在透明地在数据库中应用加密,而不会影响现有应用程序。以加密格式返回数据将破坏大多数现有应用程序。 InnoDB 数据休眠加密在不影响与传统数据库加密解决方案相关的开销的情况下,提供了加密的好处,传统数据库加密解决方案通常需要对应用程序、数据库触发器和视图进行昂贵且重大的更改。

A.17.2.

InnoDB 数据休眠加密会带来什么开销?

没有额外的存储开销。根据内部基准测试,性能开销仅为个位数百分比的差异。

A.17.3.

InnoDB 数据休眠加密使用哪些加密算法?

InnoDB 数据休眠加密支持高级加密标准 (AES256) 基于块的加密算法。它使用电子密码本 (ECB) 块加密模式进行表空间密钥加密,并使用密码分组链接 (CBC) 块加密模式进行数据加密。

A.17.4.

是否可以将第三方加密算法替换为 InnoDB 数据休眠加密功能提供的算法?

不可以使用其他加密算法。提供的加密算法被广泛接受。

A.17.5.

可以加密索引列吗?

InnoDB 数据休眠加密透明地支持所有索引。

A.17.6.

InnoDB 数据休眠加密支持哪些数据类型和数据长度?

InnoDB 数据休眠加密支持所有支持的数据类型。没有数据长度限制。

A.17.7.

数据在网络上是否保持加密?

当从表空间文件读取时,InnoDB 数据休眠功能加密的数据会被解密。因此,如果数据在网络上,它将以明文形式存在。但是,可以使用 MySQL 网络加密对网络上的数据进行加密,该加密使用 SSL/TLS 对进出数据库的数据进行加密。

A.17.8.

数据库内存中是否包含明文或加密数据?

在使用 InnoDB 数据休眠加密的情况下,内存中的数据会被解密,从而提供完全透明性。

A.17.9.

如何知道哪些数据需要加密?

遵守 PCI-DSS 标准要求信用卡号码(主账户号码,或“PAN”)以加密形式存储。违反通知法(例如,CA SB 1386、CA AB 1950,以及美国 43 个以上州的类似法律)要求对姓名、姓氏、驾驶执照号码和其他 PII 数据进行加密。在 2008 年初,CA AB 1298 将医疗和健康保险信息添加到 PII 数据中。此外,特定行业的隐私和安全标准可能要求对某些资产进行加密。例如,药物研究结果、油田勘探结果、金融合同或执法线人个人数据等资产可能需要加密。在医疗保健行业,患者数据、健康记录和 X 光片图像的隐私至关重要。

A.17.10.

InnoDB 数据休眠加密与 MySQL 已提供的加密函数有何不同?

MySQL 中存在对称和非对称加密 API,可用于手动加密数据库中的数据。但是,应用程序必须管理加密密钥并通过调用 API 函数来执行必要的加密和解密操作。 InnoDB 数据休眠加密不需要任何应用程序更改,对最终用户来说是透明的,并提供自动的、内置的密钥管理。

A.17.11.

可移植表空间功能是否支持 InnoDB 数据休眠加密?

是的。它支持加密的每表文件表空间。有关更多信息,请参阅 导出加密表空间

A.17.12.

压缩是否支持 InnoDB 数据休眠加密?

使用 InnoDB 数据休眠加密的客户可以充分利用压缩,因为压缩在数据块加密之前应用。

A.17.13.

我可以使用 mysqldump 操作加密表吗?

是的。因为这些实用程序创建逻辑备份,所以从加密表中转储的数据不会被加密。

A.17.14.

如何更改(轮换、重新加钥)主加密密钥?

InnoDB 数据休眠加密使用两级密钥机制。在使用数据休眠加密时,各个表空间密钥存储在基础表空间数据文件头的标题中。表空间密钥使用主加密密钥进行加密。主加密密钥在启用表空间加密时生成,并存储在数据库外部。使用 ALTER INSTANCE ROTATE INNODB MASTER KEY 语句轮换主加密密钥,该语句会生成新的主加密密钥,存储密钥并将密钥轮换到使用状态。

A.17.15.

如何将数据从明文 InnoDB 表空间迁移到加密的 InnoDB 表空间?

不需要将数据从一个表空间传输到另一个表空间。要加密 InnoDB 每表文件表空间中的数据,请运行 ALTER TABLE tbl_name ENCRYPTION = 'Y'。要加密一般表空间或 mysql 表空间,请运行 ALTER TABLESPACE tablespace_name ENCRYPTION = 'Y'。对一般表空间的加密支持是在 MySQL 8.0.13 中引入的。对 mysql 系统表空间的加密支持从 MySQL 8.0.16 开始提供。