1

我的网页是用 PHP 编码的,并链接到 MySQL Server Management Studio 数据库。这个网页的主要功能是允许用户通过这个网页在数据库中搜索数据。我想创建一个搜索日志来跟踪用户活动(谁,什么,他们什么时候搜索,他们得到了什么结果)。我怎样才能做到这一点?

对于管理员,他们有权从数据库表中添加、删除、编辑数据。我想创建一个审计日志来捕获添加、删除或编辑的日期时间、用户 ID、旧值、新值和字段等。

由于我是这些新手,因此感谢大家的所有帮助。先感谢您。

4

1 回答 1

1

建立您自己的审计追踪可能有隐藏的问题和警告

  1. 记录有关新值和/或旧值的详细信息可能会对您的数据库和服务器产生负面影响 - 假设您试图在第二个中保存数十条审计记录,而更新的字段是巨大的 blob 或文本字段。因此,请考虑出于审计目的截断数据或仅进行必要的审计。
  2. 考虑审核比您现在想要的更多的细节。例如,可能的附加审计字段可以包括 IP 地址。
  3. 考虑审核搜索/查看 - 用户是否只是搜索某些内容也很有帮助。

假设这个结构可以解决问题:

CREATE TABLE audit_trail (
    id int not null primary key auto_increment,
    user_id int not null,
    action_time datetime not null,
    action_performed enum ('view','add', 'edit', 'delete'),
    table_affected varchar(50) not null, -- table of affected item
    item_affected int not null, -- supposing every table has it's own id key
    old_value varchar(1000), 
    new_value varchar(1000)
)

如何存储新旧值 - 这是您的决定。首先认为自定义审计日志不适合恢复值(mysqldump 和其他实用程序来救援)。但通常存储旧值和新值的短字符串表示就足够了(这就是 varchar 的原因)

于 2018-10-01T12:48:48.970 回答