6

我被要求审核 MySQL 表中的任何/所有更改。有谁知道那里有任何工具可以帮助我做到这一点,还是我需要编写自己的解决方案?

如果我编写自己的审计,我最初的想法是制作一个单独的表并在 PHP 代码中构建一串更改。类似于“fieldname1 -> oldvalue | fieldname2 -> oldvalue, ...”。如果您发现此方法存在重大问题,请告诉我。

4

4 回答 4

3

使用触发器来检测更改并将之前/之后的值写入日志表。

于 2008-10-20T15:09:39.453 回答
3

捕获对数据库表的所有更改的唯一可靠方法是在服务器上使用触发器。修改您自己的代码以审核更改的风险是不会捕获来自另一个应用程序/用户等的更改。

话虽如此,我不确定 MySQL 4 是否支持触发器。

于 2008-10-20T15:32:29.860 回答
2

如果由于缺乏触发器支持而最终手动滚动解决方案,我强烈建议您不要只将更改转储到字符串 blob 中。有一天,您将被要求查询该数据,最终您将不得不进行一堆字符串解析才能将数据取回。(我在这里根据经验说话。)

最简单的方法是创建一个影子审计表,该表具有与原始表相同的所有列,以及一个更改日期列和一个顺序 ID。然后,您可以将整个历史记录以您需要的任何格式重建,并且您可以随意查询它。

于 2008-10-20T21:25:10.320 回答
0

SoftTree DB Audit 支持 MySQL,可能会满足您的需求:

http://www.softtreetech.com/idbaudit.htm

于 2008-10-20T16:07:12.317 回答