数据库版本:5.6.16

前几天,在测试环境中,不知道为什么突然之间,所有的一个字段值全部变成了12,需要将备份还原后开发重新清理垃圾数据并开始测试。

在开发提供 SQL语句的情况下,能否查到是谁做了这个操作?  但是在binlog中能找到SQL,可以看到SQL执行的ID,但是在binlog中是不会记录连接的IP地址。

MySQL的审计功能特别影响性能,或者是付费的MySQL版本。

胡扯半天最重要的是解决此问题的一个思路吧,update不带where条件,一张表有500W+的数据量,那么SQL必属于慢SQL,通过binlog中找到的id,在慢查询去寻找,打开slow.log,确实找到了这条update不带where条件的SQL,
同时也找到了连接的IP地址,是程序里的!!

后来想起一个网友写的一个插件,即是审计功能,据说不影响性能,有待验证,只敢在测试环境中使用,生产没胆量,本人胆小,在此也跟大家分享一下吧,在测试环境可以玩玩。

http://pan.baidu.com/s/1pLLarVl

该插件可以测试使用,不影响数据库性能,
线上数据库请测试环境测试完之后使用

一、查找插件所在位置
mysql> show variables like '%plugin_dir%';
+---------------+------------------------------+
| Variable_name | Value                        |
+---------------+------------------------------+
| plugin_dir    | /usr/local/mysql/lib/plugin/ |
+---------------+------------------------------+
1 row in set (0.00 sec)
二、将audit_版本号.so插件下载后放到plugin_dir位置
    mv audit_版本号.so  audit.so
三、加载插件
install plugin audit  SONAME 'audit.so';
四、卸载插件
uninstall plugin audit;

使用插件
mysql> show variables like '%audit%';
+----------------+----------------------+
| Variable_name  | Value                |
+----------------+----------------------+
| audit_logfile  | /tmp/mysql_audit.log |
| audit_myswitch | OFF                  |
| audit_num      | 0                    |
| audit_sql      | all_sql              |
| audit_user     | all_user             |
+----------------+----------------------+
5 rows in set (0.01 sec)

mysql> 
mysql> set global audit_logfile='/tmp/mysql_audit_1.log';----只读变量,审计仅指定在/tmp/mysql_audit.log文件,保障权限可以写
ERROR 1238 (HY000): Variable 'audit_logfile' is a read only variable

set global audit_sql='update';   -----这些审计关键字用;分开
set global audit_user='user2;user3';         ----审计用户用;隔开
set global num =0;                          ----审计sql影响的最少行数(对delete无效)
set global audit_myswitch=on|off|ON|OFF|1|0;       -----开启关闭审计

查看日志linux下tailf /tmp/mysql_audit.log

mysql5.6.tar.gz到mysql-5.7.8-rc.tar.gz是一个版本
mysql5.7.9.tar.gz---mysql5.7.11.tar.gz是一个版本

update没带where,寻找问题的思路的更多相关文章

  1. Extjs 4.2 grid 分页问题,点击下一页参数没带过去

    最初的store写法: var store = Ext.create('Ext.data.Store', { model: 'PKU',//这个地方CarPKU不是一个对象,而是一个类 remoteS ...

  2. Python类方法、静态方法与实例方法 -----类里面不需要实例化参数 和没带self的函数 调用此函数的方法

    来源: https://www.cnblogs.com/blackmatrix/p/5606364.html 静态方法是指类中无需实例参与即可调用的方法(不需要self参数),在调用过程中,无需将类实 ...

  3. 学校的信息课(备战会考)LZ没带笔……

    IP地址 四段十进制数组成(四个字节,32个二进制位数,一个字节八位) 用“.”隔开 每一段的取值范围[0,255] 分类:看第一个字节(见到的大多为B,C类) A:1~126    B:128~19 ...

  4. 「kuangbin带你飞」专题十二 基础DP

    layout: post title: 「kuangbin带你飞」专题十二 基础DP author: "luowentaoaa" catalog: true tags: mathj ...

  5. PAT 1037 在霍格沃茨找零钱(20)(代码+思路)

    1037 在霍格沃茨找零钱(20)(20 分) 如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 -- 就如海格告诉哈利的:"十七个银西可(Sickle)兑一个加隆(Galleon) ...

  6. 基于pygame的打砖块游戏,做到一半,不带做了

    跟着一个博主做的,前面的变量的定义全是内个哥们的,没带任何改动,就做了个界面,背景音乐,绘制了个小球,绘制了挡板 小球可以撞到边界反弹,然后做了砖块,定义了一个存放砖块的列表,,,就没有下文了 原博主 ...

  7. 大白话5分钟带你走进人工智能-第30节集成学习之Boosting方式和Adaboost

    目录 1.前述: 2.Bosting方式介绍: 3.Adaboost例子: 4.adaboost整体流程: 5.待解决问题: 6.解决第一个问题:如何获得不同的g(x): 6.1 我们看下权重与函数的 ...

  8. POJ-1984-Navigation Nightmare+带权并查集(中级

    传送门:Navigation Nightmare 参考:1:https://www.cnblogs.com/huangfeihome/archive/2012/09/07/2675123.html 参 ...

  9. jQuery+ASP.NET MVC基于CORS实现带cookie的跨域ajax请求

    这是今天遇到的一个实际问题,在这篇随笔中记录一下解决方法. ASP.NET Web API提供了CORS支持,但ASP.NET MVC默认不支持,需要自己动手实现.可以写一个用于实现CORS的Acti ...

随机推荐

  1. gitignore相关

    用git也有一段时间了,前些天在公司fork一个新的项目着手做,结果这个项目的creator早先把eclipse的配置文件也提交了上去,后续其他参与者提交代码时,这几个文件总是要注意不选中. 虽然不影 ...

  2. [SOA]REST与SOA两种架构的异同比较

    REST的特性 它基于HTTP协议,是一种明确构建在客户端/服务端体系结构上的一种风格.特征如下: 1.网络上的资源都被抽象为资源,这些资源都具有唯一的统一资源标识符(URI:Uniform Reso ...

  3. 「CorelDRAW降价提醒」,您关注的商品已降价!

    不管是“光棍节”还是“剁手节” 似乎和我都没有什么关系 事实证明,我错了 今天,早上竟然有不识趣的人发红包祝我单身快乐 纳尼,有没有搞错? 我能直接怼回去,说不领么? 但好像又不是我的风格 哎,一个红 ...

  4. 人工智能 Python 入门视频

    Python, 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年发明,第一个公开发行版发行于1991年.       Python是纯粹的自由软件, 源代码和解 ...

  5. java 常用API

    package com.orcal.demc01; public class Regex { public static void main(String[] args) { // TODO Auto ...

  6. SQL Server 2017 安装问题(转)

    遇到问题 Polybase 要求安装 Oracle JRE7 更新 规则失败 安装完毕之后,登录提示:您试图连接的 SQL Server 实例未安装 安装完SQL Server 2017 后,无法启动 ...

  7. CenOS 安装python3 与python2共存

    Linux下默认系统自带python2.6的版本,这个版本被系统很多程序所依赖,所以不建议删除,如果使用最新的Python3那么我们知道编译安装源码包和系统默认包之间是没有任何影响的,所以可以安装py ...

  8. 这份接口管理平台 eoLinker 开源版的部署指南教程你一定不想错过

    本文主要内容是讲解如何在本地部署eoLinker开源版. 环境要求 1.PHP 5.5+ / PHP7+(推荐) 2.Mysql 5.5+ / Mariadb 5.5+ 3.Nginx(推荐) / A ...

  9. MySQL笔记4------面试问题

    1.链接1:https://blog.csdn.net/derrantcm/article/details/51533885. 链接2:https://blog.csdn.net/derrantcm/ ...

  10. 批量修改Linux系统密码

    截取主机IP地址最后一位数.匹配一组定义好的自定义密码.使用chpasswd修改主机账户密码 截图主机IP [root@web01 ~]# ip addr 1: lo: <LOOPBACK,UP ...