【发布时间】:2014-02-27 13:59:09
【问题描述】:
我有一个数据量快速增长的 MySQL 数据库。
我想使用一些可插入数据库的基于 Web 的工具,以便我可以分析数据并创建报告。
我们的想法是使用复制来授予对从属数据库的 R/O 访问权限,而不必担心主数据库上的安全问题(其中还包含与该项目无关的数据,但同样重要)。
主数据库包含从源进行散列 (SHA1 128) 的字符串,在从属数据库上,它们需要使用反向散列数据库返回其原始形式。
这将允许我插入从数据库(位于另一台服务器上)的任何工具直接开箱即用。
我的问题是:在以某种方式将带有提到的字符串的从数据库重塑回源格式的同时进行复制的最佳方法是什么?
示例
MASTER DB
a8866ghfde332as
a8fwe43kf3e3t42
SLAVE DB
John Smith
Rose White
从数据库应该已经包含反转的表,并且在执行查询时不应反转。
你们认为我应该如何处理这个问题? 复制是否可行?
感谢您的帮助!
编辑
我应该指定一些细节:
- 从数据库也将包含一个反向散列(查找)表
- 源字符串的数量有限,因此冲突风险很小
- 最好的选择是仅将某些表复制到从属数据库,其中从属数据库在每次插入时都会进行反向哈希查找,并将反向哈希保存在另一个表(或列)中以供读取基于网络的工具
我愿意使用的这种设置主要集中在除了源(在数据库中创建记录)和从数据库本身之外,没有任何东西连接到主数据库。
通过将反向查找表放在与数据源不直接接触的数据库(从属)中,这将提高安全性。
因此,即使有人破解了源并进入主数据库,也无法检索到任何有用的数据,即哈希对象中的字符串。
【问题讨论】:
-
哈希值不是唯一的,因此您只能检索其中一个可能的值。
-
严格来说,从属实例包含与其主实例相同的数据。您可能需要数据库中某些但不是所有表的快照或副本。 (顺便说一句,如果这是美国的健康数据,请在继续此项目之前咨询您的安全人员。)
-
反转散列函数非常昂贵。这几乎是不可能的。
-
@Barmar,OP 说他有一个用于此目的的查找表。大概他不是指饼干的彩虹桌,而是与他的其他桌子同时填充的桌子。
标签: mysql replication union lookup sha1