• Mysql对用户操作加审计功能——初级版


    在某些应用里,需要知道谁对表进行了操作,进行了什么操作,所为责任的追朔。在MYSQL里,可以使用触发器实现。

    1:创建测试表

    mysql> create table A(a int);
    Query OK, 0 rows affected (0.01 sec)

    2:创建追踪表,里面包含表名称,操作类型,操作时间,操作员,操作机器IP地址

    mysql> create table trace(tbname varchar(30),DML_type varchar(10),DML_time datetime,DML_user varchar(30),DML_IP varchar(30));
    Query OK, 0 rows affected (0.01 sec)

    3:在A表创建触发器

    create trigger insert_a after insert on  A1
    for each row
    insert into trace values ('A1','INSERT',NOW(),substring_index(current_User(),'@',1),substring_index(current_User(),'@',-1));

    4:插入测试数据

    mysql> insert into A values(1);
    Query OK, 1 row affected (0.00 sec)

    mysql> select * from trace;
    +--------+----------+---------------------+----------+-----------+
    | tbname | DML_type | DML_time | DML_user | DML_IP |
    +--------+----------+---------------------+----------+-----------+
    | A | INSERT | 2010-11-29 17:58:12 | root | localhost |
    +--------+----------+---------------------+----------+-----------+
    1 row in set (0.00 sec)

    mysql> select * from trace;
    +--------+----------+---------------------+----------+--------------+
    | tbname | DML_type | DML_time | DML_user | DML_IP |
    +--------+----------+---------------------+----------+--------------+
    | A | INSERT | 2010-11-29 17:58:12 | root | localhost |
    | A | INSERT | 2010-11-29 17:58:38 | cpc | 192.168.0.30 |
    +--------+----------+---------------------+----------+--------------+
    2 rows in set (0.00 sec)

    mysql> 

    这样,当0.30的机器以CPC用户登录时候,对A作了一个插入的操作,在这个表里就记录得很详细了。
    管理好数据库的用户下,查询这个表,就能够追踪到责任人了。

  • 相关阅读:
    docker 安装es
    Redis 和 Zookeeper 到底谁更牛?
    Redisson 看门狗
    记一次线上服务CPU 100%的处理过程
    必须了解的mysql三大日志-binlog、redo log和undo log
    python学习笔记 -- reduce合并减少
    Python学习笔记 -- 列表2: 遍历:嵌套列表, 将其中同位置的元素组成新的列表
    python学习笔记 -- filter() 过滤符合条件的可迭代序列
    python学习笔记 -- map() 操作可迭代序列
    python学习笔记
  • 原文地址:https://www.cnblogs.com/zuoxingyu/p/3990576.html
Copyright © 2020-2023  润新知