mysql中⽤户操作⽇志_Mysql纪录⽤户操作⽇志我们想追踪某个数据库操作记录,如想出是谁操作了某个表(⽐如谁将字段名改了)。
⼆进制⽇志记录了操作记录,线程号等信息,但是却没有记录⽤户信息,因此需要结合init-connect来实现追踪。
init-connect,在每次连接的初始化阶段,记录下这个连接的⽤户,和connection_id信息。
操作如下:
1:建监控连接信息的表
use dba;
create table accesslog(`thread_id` int primary key auto_increment, `time` timestamp, `localname` varchar(40), `machine_name` varchar(40));
2:设置变量init_connect
mysql> show variables like 'init%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| init_connect | |
| init_file | |
| init_slave | |
+---------------+-------+
3 rows in set (0.00 sec)
mysql> set global init_connect='insert into dba.accesslog(thread_id,time,localname,machine_name)
values(connection_id(),now(),user(),current_user());';
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like 'init%';
+---------------+-----------------------------------------------------------------------------------------------------------------------+
| Variable_name | Value |
+---------------+-----------------------------------------------------------------------------------------------------------------------+
| init_connect | insert into dba.accesslog(thread_id,time,localname,machine_name)
values(connection_id(),now(),user(),current_user()); |
| init_file | |
| init_slave | |
+---------------+-----------------------------------------------------------------------------------------------------------------------+
3 rows in set (0.00 sec)
3:分配⽤户权限
mysql> grant select,insert,update on dba.accesslog to baidandan@'192.168.9.45' identified by 'baidandan';
Query OK, 0 rows affected (0.00 sec)
--为了做实验,给baidandan赋予操作dba.t表的权限
mysql> grant select,delete on dba.t to baidandan@'192.168.9.45';
Query OK, 0 rows affected (0.00 sec)
4:测试
--客户端连接进⾏测试
C:\Users\dandan>mysql -u baidandan -p -h 192.168.6.51
Enter password: *********
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 371
Server version: 5.6.20-r5436-log Source distribution
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> use dba;
Database changed
mysql> delete from t;
Query OK, 1 row affected (0.10 sec)
windows怎么使用mysqlmysql> commit;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from t;
Empty set (0.00 sec)
假如我现在想看是谁把DBA.t表⾥的数据给删掉了。
查看⽇志:
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000007 | 1640 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
--假如我知道这个数据是在6⽉18号9点后被删除的:
[root@ser6-51 data]# mysqlbinlog mysql-bin.000007 --start-datetime='2015-06-18 09:00:00'
--查到删除的语句:
#150618 16:55:30 server id 1 end_log_pos 1609 CRC32 0xa2296c53 Query thread_id=371 exec_time=0 error_code=0
use `dba`/*!*/;
SET TIMESTAMP=1434617730/*!*/;
delete from t
/*!*/;
--查询accesslog表
mysql> select * from dba.accesslog where thread_id=371;
+-----------+---------------------+------------------------+------------------------+
| thread_id | time | localname | machine_name |
+-----------+---------------------+------------------------+------------------------+
| 371 | 2015-06-18 16:55:19 | baidandan@192.168.9.45 | baidandan@192.168.9.45 |
+-----------+---------------------+------------------------+------------------------+
1 row in set (0.00 sec)
注意: 对于所有的普通级别的⽤户,必须全部都要对⽇志表具有读写权限, 否则将导致,没有权限的⽤户⽆法使⽤数据库。
init_connect 不会记录有超级管理员权限的⽤户连接信息 (原因:当init_connect设置有误时,超级管理员可进⾏修改)
因此,对于⼀般的⽤户,不能赋予all privileges权限。
--如果想查看所有的增删改查记录,在general log(需要先开启)⾥查询即可。⾥⾯记录了连接的⽤户和IP信息。如:
2016-10-08T12:09:58.476859Z 57 Connect
baidandan@10.0.9.121 on dba using TCP/IP
mysql颠覆实战笔记(三)-- ⽤户登录(⼆):保存⽤户操作⽇志的⽅法
版权声明:笔记整理者亡命⼩卒热爱⾃由,崇尚分享.但是本笔记源⾃www.jtthink(程序员在囧途)沈逸⽼师的.如需转载请尊重⽼师劳动,保留沈逸 ...
利⽤Hibernate实现⽤户操作⽇志
⽹上搜索发现,实现⽤户操作⽇志的⽅式有:⾃定义注解⽅式.Hibernate⽅式.Hibernate⽅式等. 1.⾃定义注解⽅式较为⿇烦,需要进⾏操作记录的⽅法均需要添加注解,但是相对的操作 ...
基于NopCommerce的开发框架——缓存、⽹站设置、系统⽇志、⽤户操作⽇志
最近忙于学车,抽时间将Nop的⼀些公⽤模块添加进来,反应的⼀些⼩问题也做了修复.另外有园友指出Nop内存消耗⼤,作为⼀个开源电商项⽬,性能⽅⾯不是该团队⾸要考虑的,开发容易,稳定,代码结构清晰简洁也是 ...
springAOP记录⽤户操作⽇志
项⽬已经开发完成,需要加⽤户操作⽇志,如果返回去加也不太现实,所以使⽤springAOP来完成⽐较合适. 注解⼯具类:
@Retention(RetentionPolicy.RUNTIME) @Tar ...
微软企业库5.0 学习之路——第九步、使⽤PolicyInjection模块进⾏AOP—PART4——建⽴⾃定义Call Handler实现⽤户操作⽇志记录
在前⾯的Part3中, 我介绍Policy Injection模块中内置的Call Handler的使⽤⽅法,今天则继续介绍Call Handler——Custom Call Handler,通过建⽴ ...
RabbitMQ实战场景(⼀):异步记录⽤户操作⽇志
传统的项⽬开发中业务流程以串⾏⽅式,执⾏了模块1—>模块2–>模块3 ⽽我们知道,这个执⾏流程其实对于整个程序来讲是有⼀定的弊端的,主要有⼏点: (1)整个流程的执⾏响应等待时间⽐较长; ...
Spring AOP使⽤注解记录⽤户操作⽇志
最后⼀个⽅法:核⼼的⽇志记录⽅法 package aspect; import com.alibaba.fastjson.JSON; import do ...
按时按登录IP记录Linux所有⽤户操作⽇志的⽅法(附脚本)
PS:Linux⽤户操作记录⼀般通过命令history来查看历史记录,但是如果因为某⼈误操作了删除了重要的数据,这种情况下history命令就不会有什么作⽤了.以下⽅法可以实现通过记录登陆IP地址和所 ...
ssm 项⽬记录⽤户操作⽇志和异常⽇志
借助⽹上参考的内容,写出⾃⼰记录操作⽇志的⼼得!! 我⽤的是ssm项⽬使⽤aop记录⽇志:这⾥⽤到了aop的切点 和 ⾃定义注解⽅式: 1.建好数据表: 数据库记录的字段有: ⽇志id .操作⼈.操作 ...
随机推荐
yii2事务运⽤举例
直接上代码: $db = Yii::$app->db; $transaction = $db->beginTransaction(); //开启事务 try { // 更新member表 ...
Redis使⽤系列⽬录(⼀)
环境介绍 Redis 安装 Redis配置⽂件详解 Redis主从复制搭建 Redis集环境搭建 Redis⾼可⽤
go环境import cycle not allowed问题处理
MathType 公式后的空格问题
注册表编辑器修改 Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Design Science\DSMT6\WordC ...
gis 导出 dwg,shp
当我们在webgis 想要把某个地块或者多个地块导出dwg或者shp⽂件的时候怎么办?这个时候最好就是⽤后台的⽅式.⾸先把web gis上的graphic 的polygon提取为坐标的形式(类似于x, ...
1.css的语法标准
css(Cascading Style Sheets),中⽂名称为层叠样式表,主要⽤于对html的样式设置. 在使⽤CSS的时候,要注意其优先级情况,优先级由下所⽰(数字越⾼,优先级越⾼): 浏览器缺 ...
spring技术翻译开始
从今天开始,我会坚持每天花费两个⼩时来翻译⼀本英⽂书(当然⾃⼰觉得绝对算得上是经典),可能我英⽂⽔平有限,但也请路过的⾼⼈予以指点. 如果有翻译的出⼊很⼤,望各位告知,本⼈⼀定更改.决定翻译的⽬的有两 ...
Java Calendar使⽤总结
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论