Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在敏感数据被删除或损坏的情况下从mysql转储数据库?_Mysql_Security - Fatal编程技术网

如何在敏感数据被删除或损坏的情况下从mysql转储数据库?

如何在敏感数据被删除或损坏的情况下从mysql转储数据库?,mysql,security,Mysql,Security,我正在使用mysql。有些表包含敏感数据,如用户名、电子邮件地址等。我想转储数据,但表中的这些列被删除或修改为一些虚假数据。有什么方法可以轻松做到这一点吗?我正在使用这种方法: 将敏感表的内容复制到临时表 清除/加密敏感列 向mysqldump.exe提供--忽略表参数以保留原始表 它保留外键约束,并且可以保留不敏感的列 前两个操作包含在一个存储过程中,我在转储之前调用该存储过程。它看起来像这样: BEGIN truncate table person_anonymous; i

我正在使用mysql。有些表包含敏感数据,如用户名、电子邮件地址等。我想转储数据,但表中的这些列被删除或修改为一些虚假数据。有什么方法可以轻松做到这一点吗?

我正在使用这种方法:

  • 将敏感表的内容复制到临时表
  • 清除/加密敏感列
  • 向mysqldump.exe提供
    --忽略表
    参数以保留原始表
  • 它保留外键约束,并且可以保留不敏感的列

    前两个操作包含在一个存储过程中,我在转储之前调用该存储过程。它看起来像这样:

    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混淆数据的文章


    有点复杂。尤其是当表很大时,表的复制和更新会消耗资源。无论如何,谢谢你的解决方案。有趣的概念