MYSQL触发器记录用户操作的命令
假如有一张重要的表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触发器记录用户操作的命令相关推荐
- MySQL 使用触发器记录用户的操作日志
MySQL 使用触发器记录用户的操作日志 目录 MySQL 使用触发器记录用户的操作日志 一.创建用户数据表(emp)和保存操作日志的表(emp_log) 二.为 emp 表创建触发器 1.创建触发器 ...
- spring boot项目怎么记录用户操作行为和登录时间_6 个 Github 项目拿下 Spring Boot
经常浏览技术社区.技术公众号的读者会有一个感受,那么就是 Spring Boot 相关的文章和相关咨询越来越多.包括小逛和技术公众号的博主交流,他们也发现推送 Spring Boot 相关的文章阅读量 ...
- ssm 项目记录用户操作日志和异常日志
ssm 项目记录用户操作日志和异常日志 参考文章: (1)ssm 项目记录用户操作日志和异常日志 (2)https://www.cnblogs.com/mei-m/p/10231792.html (3 ...
- Spring Boot + Aop 记录用户操作日志
目录 一.前言 二.实战 1.设计用户操作日志表: sys_oper_log 2.引入依赖 3.自定义用户操作日志注解 4.自定义用户操作日志切面 5.MyLog注解的使用 6.最终效果 三.总结 一 ...
- mysql 操作审计_利用mysql的audit审计功能记录用户操作信息
mysql数据库中我们如果想记录用户的操作信息,可以通过audit审计功能来来实现.该功能是被自动触发的,在文件plugin_audit.h中可以看到比较详细的定义.在audit插件中,可控制的变量包 ...
- linux系统监控:记录用户操作轨迹,谁动过服务器
1.前言 我们在实际工作当中,都碰到过误操作.误删除.误修改过配置文件等等事件.对于没有堡垒机的公司来说,要在linux系统上深究到底谁做过配置文件的修改.做过误删除是很头疼的事情,特别是遇到删库跑路 ...
- mysql查当前用户的的命令_mysql命令大全用户管理相关命令
grant 普通数据用户,查询.插入.更新.删除 数据库中所有表数据的权利. grant select on testdb.* to common_user@'%' grant insert on t ...
- Linux记录用户操作日志
前言 我这里计划用SLS做服务器日志审计,安装Logtail后通过 [分隔符-文本] 的方式,采集服务器各种相关日志,大概需要以下内容(目录可能是错的,这个是做等保的评测的兄弟发过来的) /var/l ...
- mysql工具记录用户的查询语句_MySQL数据库的常用命令语句记录——安全用户语句及函数...
安全用户语句及函数 CREATE USER:创建用户 CREATE USER 'user'[@'host'] [ IDENTIFIED BY [PASSWORD] 'password'][,....] ...
最新文章
- InnoDB体系结构
- python子进程 内存,python中的子进程内存使用情况
- k8s kubectl run命令使用详解
- 请教 Discuz syscache 中一段cache 的意思
- 廖雪峰python教程菜鸟变高手_python怎样
- jQuery的ajaxFileUpload上传文件插件刷新一次才能再次调用触发change
- laravel admin 根绝model创建控制器路由命令
- 21天Jmeter打卡Day17 后置处理器_JSON_正则表达式_边界提取器_完成删除场景模拟测试
- PTAM(parallel Tracking and Mapping)
- python 基于smb通信协议实现NAS服务器文件上传和下载
- matlab 空间后方交会,摄影测量空间后方交会.docx
- Git的cherry-pick等一些小知识
- opencv3.2教程linux,Linux编译OpenCV3.2.0-OCL模块并使用
- Android系统移植与调试之-------build.prop文件详细赏析
- 【算法设计与分析】HDU-1108 C++诡异的楼梯(BFS迷宫最短路径)
- DNSPod十问袁志远:智慧园区,被严重低估的To B赛道?
- seata xid是什么_急:IDMA是什么?SDMA又是什么?
- SCI论文并没有想像中的难写,发表SCI论文的小技巧。2012年和2013年SCI期刊论文和EI期刊论文
- Netty 大文件传输
- JAVA 生成同音字的方法,随机生成汉字,汉字转拼音,写的不好,望指正.谢谢~
热门文章
- Vue报错:Uncaught TypeError: Cannot assign to read only property’exports‘ of object’#Object‘的解决方法...
- node js npm 和 cnpm的使用
- 저장소system.runtime.remoting.messaging.callcontext
- Python语言精要---上
- web入门+书籍推荐
- Android实例-调用系统APP(XE10+小米2)
- C++中文转码问题(GB2312 - UTF8)
- Linux系统运维工程师PDF文档精选
- NetDevOps — NAPALM
- EdgeGallery — MEP — 系统架构