我正在使用mysql。有些表包含敏感数据,如用户名,电子邮件地址等。我想转储数据,但表中的这些列已删除或修改为某些虚假数据。有什么方法可以轻松完成吗?
答案 0 :(得分:5)
我正在使用这种方法:
--ignore-table
个参数以保留原始表格。它保留了外键关键字,你可以保留不敏感的列。
前两个操作包含在我执行转储之前调用的存储过程中。它看起来像这样:
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
如您所见,我没有清除字段的内容。相反,我保持哈希。这样,您仍然可以看到哪些行具有相同的值,并且在导出之间您可以看到是否有任何更改,而没有任何人能够读取实际值。
答案 1 :(得分:2)
有一个名为Jailer的工具,通常用于导出数据库的子集。我们在工作中使用它来从生产备份创建一个较小的测试数据库,并对所有敏感数据进行模糊处理。
GUI有点粗糙,但Jailer是迄今为止我发现的最佳选择。 您可以简单地取消选择敏感表或列,并获得其余的完整副本。 Jailer还支持在导出期间对数据进行模糊处理 - 例如,您可以使用md5哈希所有用户名或将所有电子邮件地址更改为user@example.org。
有tutorial让你入门。
答案 2 :(得分:1)
ProxySQL是另一种方法。
这篇文章解释了如何使用proxysql对数据进行模糊处理。