假如有一张重要的表btb,需要几个管理员来管理

管理员:ma1@localhost、ma2@localhost、ma3@localhost

要求给表btb创建触发器:

trigger触发器需求:

1、当在btb表中做insert、update、delete操作时,在btb_trace表中记录执行操作的用户、时间、操作命令。

1、当在btb表中插入新记录时,atb_bak表中会将atb表中的所有数据记录下来。保持同步备份。

2、当在btb表中删除数据前,在atb_del表中将atb删除的数据记录一份。

3、当在btb表中更新数据时,在atb_update表中将atb数据更新前后的数据记录一份。

修改版(优化)

说明:触发器中用new和old来向触发器操作的表中传递数据。new表示操作字段的新值(用于insert和update触发事件),old表示字段的旧值(用于delete触发事件)。

格式:new.字段名      ;old.字段名。

创建用户:

grant  all   on  *.*   to   ma1@'%'  identified  by   'ma1'  with  grant   option;

grant  all   on  *.*   to   ma2@'%'  identified  by   'ma2'  with  grant   option;

grant  all   on  *.*   to   ma3@'%'  identified  by   'ma3'  with  grant   option;

flush  privileges;

select  user,host,password   from   mysql.user;

创建与atb表结构相同的5张表:

use  test

create  table   btb(id  int,name  varchar(50));

create table btb_trace(name varchar(50),time varchar(50),act  varchar(20),id  varchar(20),sname  varchar(50));

create  table  btb_bak(user  varchar(100),id  int,name   varchar(50),del_time  varchar(50));

create  table  btb_del(user  varchar(100),id  int,name   varchar(50),del_time  varchar(50));

create  table  btb_update(user  varchar(100),id  int,name   varchar(50),del_time  varchar(50));

insert into btb_trace (name,time,act,id,sname) values(user(),now(),'insert',0,  'root');

select  *   from   btb_trace;

删除旧触发器:

show    triggers \G

drop   trigger    insert_btb;

drop   trigger    delete_btb;

drop   trigger    update_btb;

触发器1(insert触发事件):

\d  $$

create  trigger insert_btb after  insert on  btb

for  each row

begin

insert  into btb_trace (name,time,act,id,sname) values(user(),now(),'insert',new.id,new.name);

insert  into    btb_bak  values(user(),new.id,new.name,now());

end

$$

\d  ;

触发器2(delete触发事件):

\d  $$

create  trigger delete_btb  before  delete on   btb

for  each row

begin

insert  into btb_trace (name,time,act,id,sname) values(user(),now(),'delete',old.id,old.name);

insert  into btb_del values(user(),old.id,old.name,now());

end

$$

\d  ;

触发器3(update触发事件):

\d  $$

create  trigger update_btb after  update on  btb

for  each row

begin

insert  into btb_trace(name,time,act,id,sname) values

(user(),now(),'update',concat(old.id,'->',new.id),concat(old.name,'->',new.name));

insert  into btb_update values(user(),new.id,new.name,now());

end

$$

\d  ;

登录并测试:mysql   -uma1  -pma1    -h192.168.50.10

use   test;

insert  into   btb values(1,'tom');

insert  into   btb values(2,'jack');

insert  into   btb values(3,'lucy');

update  btb   set  id=10  where   id=1;

delete  from  btb   where  id=3;

select  *   from  btb_trace;

select  *   from  btb_bak;

select  *   from  btb_update;

select  *   from  btb_del;

转载于:https://blog.51cto.com/1364952/1954611

MYSQL触发器记录用户操作的命令相关推荐

  1. MySQL 使用触发器记录用户的操作日志

    MySQL 使用触发器记录用户的操作日志 目录 MySQL 使用触发器记录用户的操作日志 一.创建用户数据表(emp)和保存操作日志的表(emp_log) 二.为 emp 表创建触发器 1.创建触发器 ...

  2. spring boot项目怎么记录用户操作行为和登录时间_6 个 Github 项目拿下 Spring Boot

    经常浏览技术社区.技术公众号的读者会有一个感受,那么就是 Spring Boot 相关的文章和相关咨询越来越多.包括小逛和技术公众号的博主交流,他们也发现推送 Spring Boot 相关的文章阅读量 ...

  3. ssm 项目记录用户操作日志和异常日志

    ssm 项目记录用户操作日志和异常日志 参考文章: (1)ssm 项目记录用户操作日志和异常日志 (2)https://www.cnblogs.com/mei-m/p/10231792.html (3 ...

  4. Spring Boot + Aop 记录用户操作日志

    目录 一.前言 二.实战 1.设计用户操作日志表: sys_oper_log 2.引入依赖 3.自定义用户操作日志注解 4.自定义用户操作日志切面 5.MyLog注解的使用 6.最终效果 三.总结 一 ...

  5. mysql 操作审计_利用mysql的audit审计功能记录用户操作信息

    mysql数据库中我们如果想记录用户的操作信息,可以通过audit审计功能来来实现.该功能是被自动触发的,在文件plugin_audit.h中可以看到比较详细的定义.在audit插件中,可控制的变量包 ...

  6. linux系统监控:记录用户操作轨迹,谁动过服务器

    1.前言 我们在实际工作当中,都碰到过误操作.误删除.误修改过配置文件等等事件.对于没有堡垒机的公司来说,要在linux系统上深究到底谁做过配置文件的修改.做过误删除是很头疼的事情,特别是遇到删库跑路 ...

  7. mysql查当前用户的的命令_mysql命令大全用户管理相关命令

    grant 普通数据用户,查询.插入.更新.删除 数据库中所有表数据的权利. grant select on testdb.* to common_user@'%' grant insert on t ...

  8. Linux记录用户操作日志

    前言 我这里计划用SLS做服务器日志审计,安装Logtail后通过 [分隔符-文本] 的方式,采集服务器各种相关日志,大概需要以下内容(目录可能是错的,这个是做等保的评测的兄弟发过来的) /var/l ...

  9. mysql工具记录用户的查询语句_MySQL数据库的常用命令语句记录——安全用户语句及函数...

    安全用户语句及函数 CREATE USER:创建用户 CREATE USER 'user'[@'host'] [ IDENTIFIED BY [PASSWORD] 'password'][,....] ...

最新文章

  1. InnoDB体系结构
  2. python子进程 内存,python中的子进程内存使用情况
  3. k8s kubectl run命令使用详解
  4. 请教 Discuz syscache 中一段cache 的意思
  5. 廖雪峰python教程菜鸟变高手_python怎样
  6. jQuery的ajaxFileUpload上传文件插件刷新一次才能再次调用触发change
  7. laravel admin 根绝model创建控制器路由命令
  8. 21天Jmeter打卡Day17 后置处理器_JSON_正则表达式_边界提取器_完成删除场景模拟测试
  9. PTAM(parallel Tracking and Mapping)
  10. python 基于smb通信协议实现NAS服务器文件上传和下载
  11. matlab 空间后方交会,摄影测量空间后方交会.docx
  12. Git的cherry-pick等一些小知识
  13. opencv3.2教程linux,Linux编译OpenCV3.2.0-OCL模块并使用
  14. Android系统移植与调试之-------build.prop文件详细赏析
  15. 【算法设计与分析】HDU-1108 C++诡异的楼梯(BFS迷宫最短路径)
  16. DNSPod十问袁志远:智慧园区,被严重低估的To B赛道?
  17. seata xid是什么_急:IDMA是什么?SDMA又是什么?
  18. SCI论文并没有想像中的难写,发表SCI论文的小技巧。2012年和2013年SCI期刊论文和EI期刊论文
  19. Netty 大文件传输
  20. JAVA 生成同音字的方法,随机生成汉字,汉字转拼音,写的不好,望指正.谢谢~

热门文章

  1. Vue报错:Uncaught TypeError: Cannot assign to read only property’exports‘ of object’#Object‘的解决方法...
  2. node js npm 和 cnpm的使用
  3. 저장소system.runtime.remoting.messaging.callcontext
  4. Python语言精要---上
  5. web入门+书籍推荐
  6. Android实例-调用系统APP(XE10+小米2)
  7. C++中文转码问题(GB2312 - UTF8)
  8. Linux系统运维工程师PDF文档精选
  9. NetDevOps — NAPALM
  10. EdgeGallery — MEP — 系统架构