如何在敏感数据被删除或损坏的情况下从mysql转储数据库?
我正在使用mysql。有些表包含敏感数据,如用户名、电子邮件地址等。我想转储数据,但表中的这些列被删除或修改为一些虚假数据。有什么方法可以轻松做到这一点吗?我正在使用这种方法:如何在敏感数据被删除或损坏的情况下从mysql转储数据库?,mysql,security,Mysql,Security,我正在使用mysql。有些表包含敏感数据,如用户名、电子邮件地址等。我想转储数据,但表中的这些列被删除或修改为一些虚假数据。有什么方法可以轻松做到这一点吗?我正在使用这种方法: 将敏感表的内容复制到临时表 清除/加密敏感列 向mysqldump.exe提供--忽略表参数以保留原始表 它保留外键约束,并且可以保留不敏感的列 前两个操作包含在一个存储过程中,我在转储之前调用该存储过程。它看起来像这样: BEGIN truncate table person_anonymous; i
--忽略表
参数以保留原始表BEGIN
truncate table person_anonymous;
insert into person_anonymous select * from person;
update person_anonymous set Title=null, Initials=mid(md5(Initials),1,10), Midname=md5(Midname), Lastname=md5(Lastname), Comment=md5(Comment);
END
如您所见,我没有清除字段的内容。相反,我保留了一份杂烩。这样,您仍然可以看到哪些行具有相同的值,在导出之间,您可以看到是否有更改,而没有人能够读取实际值。有一个名为的工具,通常用于导出数据库的子集。我们在工作中使用它从生产备份创建一个较小的测试数据库,所有敏感数据都被模糊处理
GUI有点粗糙,但到目前为止,狱卒是我找到的最好的替代品。
您只需取消选择敏感表或列,即可获得其余表或列的完整副本。Jailer还支持在导出期间混淆数据-例如,您可以将所有用户名进行md5哈希或将所有电子邮件地址更改为user@example.org.
有一种方法可以帮助您入门。ProxySQL是另一种方法 下面是一篇解释如何使用proxysql混淆数据的文章
有点复杂。尤其是当表很大时,表的复制和更新会消耗资源。无论如何,谢谢你的解决方案。有趣的概念