我需要从 MySql 数据库中永久清除单个记录(Mssql 也会很有趣)。清除我的意思是不可恢复地将它送入遗忘。
我需要这个来遵守 EU-GDPR 以及希望确保从 MySQL 中永久删除数据的客户。
我认为
从 id=1 的表中删除
将从表空间和索引中删除数据,但不会从事务日志中删除。为了实现这一点,需要执行收缩。但即使记录仍然存在磁盘上的二进制文件。
我需要实现它才能真正真正地破坏该数据库记录,这样即使是 Hacker-Jesus 也无法恢复它。
我已经对此进行了一些思考,第一个想法是不要删除记录,而是用随机数据覆盖列中的数据。据我了解,Mysql 文档会覆盖旧数据的物理内存。因此,如果有一列secret_column包含我将覆盖的数据机密信息,则使用“XXXXXXXXXXX”缩小数据库,并且该列的旧值应该消失。另一个更安全的选择是同步加密secret_column并将密钥存储在另一列cypherkey. 然后,当我想删除记录时,我解密列,创建一个临时内存密钥,使用临时密钥加密数据并将其写回数据库。这应该会永久破坏信息 - 但就性能而言,这不可能与索引列一起使用。
我很清楚这样一个事实,即数据库的任何备份仍将包含已清除的数据。这是另一个需要解决的奇迹。
我将不胜感激该问题的任何想法或(更好的)解决方案。非常感谢。