Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  MySQL 8.3 Frequently Asked Questions  /  MySQL 8.3 FAQ: InnoDB Data-at-Rest Encryption

A.17 MySQL 8.3 FAQ: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. 可以使用transportable tablespaces功能与InnoDB静态加密一起使用吗?
A.17.12. 是否可以将压缩与InnoDB静态加密一起使用?
A.17.13. 是否可以使用mysqldump与加密表一起使用?
A.17.14. 如何更换(旋转、重新密钥)主加密密钥?
A.17.15. 如何将明文InnoDB表空间迁移到加密InnoDB表空间?
(No translation needed, as this is just HTML code without any translatable text.) becomes: becomes: becomes: becomes: becomes: becomes: becomes: becomes: becomes:

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标准要求信用卡号码(Primary Account Number,简称PAN)以加密形式存储。泄露通知法(例如CA SB 1386、CA AB 1950等)要求加密姓、名、驾驶执照号码和其他个人身份信息(PII)。2008年初,CA AB 1298将医疗和健康保险信息添加到PII数据中。此外,行业特定的隐私和安全标准可能需要加密某些资产。例如,资产如制药研究结果、油田勘探结果、金融合同或执法线人个人数据可能需要加密。在医疗行业,患者数据、健康记录和X射线图像的隐私非常重要。

A.17.10.

InnoDB静态数据加密与MySQL提供的加密函数有什么不同?

MySQL中有对称和非对称加密API,可以手动加密数据库中的数据。但是,应用程序必须管理加密密钥并执行所需的加密和解密操作。 InnoDB静态数据加密不需要应用程序更改,对最终用户是透明的,并提供自动的密钥管理。

A.17.11.

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

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

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开始。

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

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开始。

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

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开始。

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

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开始。

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

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开始。

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

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开始。

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

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开始。

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

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开始。

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

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开始。

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

A.17.14.

如何更改(旋转、重新密钥)主加密密钥?

InnoDB静态数据加密使用双层密钥机制。当使用静态数据加密时,单个表空间密钥存储在基础表空间数据文件的头部中。表空间密钥使用主加密密钥加密。主加密密钥是在启用表空间加密时生成的,并存储在数据库外部。主加密密钥使用ALTER INSTANCE ROTATE INNODB MASTER KEY语句旋转,生成新的主加密密钥,存储密钥,并将其旋转到使用中。