为 MySQL 表实现审计

Posted

技术标签:

【中文标题】为 MySQL 表实现审计【英文标题】:Implementing Auditting for a MySQL Table 【发布时间】:2018-12-31 21:36:48 【问题描述】:

我想记录对我的 mysql 表的更改。我想我可以:

在应用端,每次插入/更新/删除内容时插入审计日志 或者,我可以使用 MySQL 触发器插入审计日志。要确定谁(哪个应用程序用户触发了此更改,我将有一个 lastUpdatedBy 列)。但是我如何为 DELETE 执行此操作?

哪种方法更好?或者什么是适当的/工业标准?

【问题讨论】:

你检查过hibernate-envers吗? 你试过了吗? dba.stackexchange.com/questions/178213/… 【参考方案1】:

Mysql 企业版提供审计插件来处理你的审计。检查下面的链接

https://www.mysql.com/products/enterprise/audit.html

【讨论】:

这是否要求每个应用程序用户也有 1 个 DB 用户?这是推荐的方式吗? 您可以参考官方网站上的指南和文档。 dev.mysql.com/doc/refman/8.0/en/… 建议使用,但仍然完全取决于您当前的要求。 请详细说明您的要求,以便我为您提供更多建议 我希望能够知道哪个应用程序用户做了某事。让我们假设它是一个电子商务应用程序,当用户 A 编辑他的个人资料时,我想要一个审核日志条目。同样,当自动化系统任务更新记录时,例如我也想要一个日志条目。因此,它与用于运行查询的 MySQL 用户帐户无关,而是与应用程序帐户相关联。

以上是关于为 MySQL 表实现审计的主要内容,如果未能解决你的问题,请参考以下文章

mysql利用init-connect增加访问审计功能的实现

如何实现MySQL数据库使用情况的审计

将 MERGE 语句的更新列审计为不同表中的行

在 Mysql 中添加新列时如何轻松维护审计触发器

利用mysql注释实现无硬件成本的审计功能

MySQL 添加审计功能