我们想追踪某个数据库操作记录,如想找出是谁操作了某个表(比如谁将字段名改了)。

二进制日志记录了操作记录,线程号等信息,但是却没有记录用户信息,因此需要结合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)

mysql> 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.com(程序员在囧途)沈逸老师的.如需转载请尊重老师劳动,保留沈逸 ...

利用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 com.migu.cm.aspect; import com.alibaba.fastjson.JSON; import com.migu.cm.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问题处理

1.前言 今天在搭建Go语言环境,从https://golang.org/dl/上下载一个Go语言环境.环境变量配置刚开始如下配置: GOROOT=/home/go/bin     go执行文件目录 ...

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使用总结

mysql中用户操作日志_Mysql 纪录用户操作日志相关推荐

  1. mysql中关系怎么弄_mysql数据库关系操作

    ### mysql数据库 #### 知识要点: 1. 数据操作增.删.改 2. 外键约束要求 3. 一对多表关系 4. 一对一表关系 5. 多对多表关系 6. 外键约束的参照操作 ### 数据操作 # ...

  2. mysql中如何运行存储过程_MySQL存储过程如何操作

    mysql在5.1之后增加了存储过程的功能, 存储过程运行在mysql内部,语句都已经编译好了,速度比sql更快. 存储过程与mysql相当于shell和linux系统.如果你是程序员的话,那我告诉你 ...

  3. mysql的char在java中表示为_Java学习篇之-Mysql中varchar门类总结_mysql

    java学习篇之---mysql中varchar类型总结 Mysql中varchar类型总结 今天新做一个项目,需要自己进行数据库设计,发现自己对varchar的用法还不是很熟悉,所以查阅资料总结若下 ...

  4. mysql允许用户远程连接_mysql允许用户远程连接

    一,安装MySQL 这个应该很简单了,而且我觉得大家在安装方面也没什么太大问题,所以也就不多说了,下面我们来讲讲配置. 二,配置MySQL 注意,在Ubuntu下MySQL缺省是只允许本地访问的,如果 ...

  5. mysql允许两个用户远程连接_mysql允许用户远程连接

    一,安装MySQL 这个应该很简单了,而且我觉得大家在安装方面也没什么太大问题,所以也就不多说了,下面我们来讲讲配置. 二,配置MySQL 注意,在Ubuntu下MySQL缺省是只允许本地访问的,如果 ...

  6. mysql给用户授权最大_mysql 给用户授权

    MySQL用户授权 GRANT 语句的语法如下:      GRANT privileges (columns)            ON what            TO user IDENT ...

  7. mysql drop user 并删除_MySQL删除用户( DROP USER)

    在本教程中,您将学习如何使用MySQL DROP USER语句来删除用户帐户. MySQL DROP USER语句介绍 要删除一个或多个,请按如下所示使用DROP USER语句: DROP USER ...

  8. mysql 给用户取消权限_MySQL创建用户并授权及撤销用户权限

    这篇文章主要介绍了MySQL创建用户并授权及撤销用户权限.设置与更改用户密码.删除用户等等,需要的朋友可以参考下 MySQL中创建用户与授权的实现方法. 运行环境:widnows xp profess ...

  9. mysql修改登录权限设置密码_MySQL修改用户密码及权限限制设置

    使用phpmyadmin来更改Mysql的root密码非常方便,安装配置好phpmyadmin后,首先登陆管理界面,点击右侧修改密码链接,输入你要修改的Mysql的root新密码,最后点击执行即可, ...

最新文章

  1. C++利用二级指针做函数形参来进行修改实参的实例分析
  2. Linux(ubuntu)下安装anaconda(64位)并配置jupyter notebook远程访问
  3. linux下的PHP+Mysql+PHPWind实现
  4. git获取提交记录commit id
  5. 用 Python 对比两个目录下的内容,并生成 Json 文件
  6. SqlServer 根据一个表数据更新另外一个表
  7. Codeforces Gym 100269G Garage 数学
  8. AtCoder Grand Contest 013 题解
  9. float 常见用法与问题--摘抄
  10. 安卓分辨率_华为平板M6会不会是最强安卓平板?
  11. 双击图片不放大手机php,Android_Android App中实现可以双击放大和缩小图片功能的实例,先来看一个很简单的核心图片 - phpStudy...
  12. Python之random.seed()用法
  13. 从程序设计方法学的角度比较 SP 方法与OOP 方法
  14. juniper使用U盘安装junos10k2系统
  15. renderdoc 抓google地图
  16. win7 简体中文 旗舰版 种子 永久激活 全在附件
  17. $(...).dataTable is not a function
  18. 台式计算机主机内置喇叭不响,台式机扬声器没声音怎么样解决
  19. 数据可视化开源工具软件
  20. creator 物理画线

热门文章

  1. 如何从业余爱好者自学进阶成专业开发者
  2. @PathVariable注解
  3. 台式计算机的计算速度,台式机网速如何测试
  4. 30分钟初步掌握LaTeX--转自新浪博客
  5. 对 VIIRS/NPP 夜光数据的解读
  6. 将默认打开方式改成Office后,桌面办公软件图标变成白板
  7. SNS平台ConcourseConnect
  8. 全球经典的50个免费wordpress主题
  9. win7系统怎么卸载显卡驱动,电脑卸载显卡驱动的方法
  10. 每天汇总----10.18