基于MySQL服务器安全性需求,我们需要部署一套安全审计机制,以便当服务器出现用户活跃访问数据库、用户修改表结构、大批量数据修改等等危险操作时,我们可以进行实时的监控,报警。对于事后问题处理,有据可查。

在MySQL5.5之前,MySQL本身缺少一套的对服务器操作的审计机制,对于非法或者危险的操作、错误捕捉、登录审计尚不能很好的支持。当出现drop了一个表或者不慎不带where的删除表数据等危险操作时,应该被明确的记录下来。

在MySQL5.5里,添加了额外的流程来对这些我们所关心的地方进行事件捕获;然后将捕获到的事件传递给Audit Plugin;而Audit Plugin所要做的,就是对这些事件进行判别,并做必要的反应,比如记录到log或发送一个报警。

Audit Plugin基本工作流程:

Audit Plugin内部实现:

sql/sql_audit.cc该文件定义了audit插件的接口函数;

sql/sql_audit.h该文件申明函数,并定义了函数mysql_audit_general_log,在触发audit时,首先调用的就是该函数;

audit_null.c模版程序,给出了最基础的audit插件所需要定义的接口,程序audit_null.c中包括了两个必备头文件mysql/plugin.h,mysql/plugin_audit.h。

新增加的审计插件,其实现思想是在内核代码的不同位置增加相应的接口函数,具体实现在sql_audit.cc和sql_audit.h文件。在/plugin/audit_null/文件夹下的样本程序文件audit_null.c(对该文件进行编译之后生成so文件即是我们所需的插件,MySQL5.5.23模版so文件为adt_null.so),插件名字为NULL_AUDIT。

在模板程序audit_null.c 的基础上,我们编辑了符合自己业务需求的程序,主要对audit_null_notify函数进行了相应更改,能够实现通过配置文件读取条件,对来自指定用户和访问IP的数据库操作情况进行记录,包括操作时间、用户名、操作语句记录、影响行数。

配置文件形式如下:

[log]

file = /var/lib/mysql/my_audit.log

[audit1]

user = un_

[audit2]

user = us_

[audit3]

user = uapp_

ip = 192.168.XX

用sysbench工具对审计插件进行性能测试后发现,当安装了自定义审计插件后,如果完全没有需要审计的内容,则几乎没有性能损失,约为0.1%;如果所有的操作都需要进行记录,则性能会下降30%左右,这些性能损失应该主要来自于IO消耗。

后一种场景的测试信息如下:

测试服务器

vms00XXX (5.5.21)

硬件配置

CPU 2核 内存4G

表数据量

100万

并发线程数

200

测试时间

10分钟*3

测试帐号

符合审计条件

queries performed

未使用插件

使用插件

降幅

read

1876910

1287524

31.40%

write

670325

459830

31.40%

other

268130

183932

31.40%

total

2815365

1931286

31.40%

transactions

134065 (223.37 per sec.)

91966(153.23 per sec.)

31.40%

deadlocks

0(0.00 per sec.)

0(0.00 per sec.)

31.40%

read/write requests

2547235 (4244.01 per sec.)

1747354 (2911.32 per sec.)

31.40%

other operations

268130 (446.74 per sec.)

183932 (306.45 per sec.)

31.40%

mysql audit plugin_MySQL Audit Plugin的简单应用相关推荐

  1. php 登陆 sql语句,PHP 连接MySQL数据库的SQL语句的简单示例

    这篇文章主要为大家详细介绍了PHP 连接MySQL数据库的SQL语句的简单示例,具有一定的参考价值,可以用来参考一下. 首先用phpmyadmin进入建立数据库user 再建个三段的表admin 再别 ...

  2. mysql 操作表的例子,mysql中库和表的简单操作总结(附示例)

    本篇文章给大家带来的内容是关于mysql中库和表的简单操作总结(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 一. 库的操作 1.创建数据库 创建数据库: create d ...

  3. 快捷配置mysql_windows下的mysql的快捷安装方法和简单配置

    windows下的mysql的快捷安装方法和简单配置 作者:兴邦开发部 人气: 发表时间:2015年12月14日 [文章内容简介]:关于windows下的mysql的安装有很多种形式,下面来介绍一种简 ...

  4. mysql 5.6 登录 警告_解决mysql登录出现警告问题的简单方法

    解决mysql登录出现警告问题的简单方法 发布时间:2020-05-11 11:50:39 来源:亿速云 阅读:125 作者:三月 本文主要给大家介绍解决mysql登录出现警告问题的简单方法,文章内容 ...

  5. swoole mysql 协程_swoole-orm: 基于swoole的mysql协程连接池,简单封装。实现多个协程间共用同一个协程客户端。参考thinkphp-orm...

    swoole-orm 基于swoole的mysql协程连接池,简单封装. 实现多个协程间共用同一个协程客户端 感谢完善 [1]:nowbe -> 新增数据返回insert_id 版本 v0.0. ...

  6. 常用Mysql存储引擎--InnoDB和MyISAM简单总结

    常用Mysql存储引擎--InnoDB和MyISAM简单总结 2013-04-19 10:21:52|  分类: CCST|举报|字号 订阅 MySQL服务器采用了模块化风格,各部分之间保持相对独立, ...

  7. mysql克隆schema_MySQL clone plugin(克隆插件)

    前言 在MySQL 8.0.17版本中引入了新的插件clone plugin.克隆插件允许克隆本地或远程MySQL服务器实例中的数据.克隆数据是存储在InnoDB中的数据的物理快照,包括模式.表.表空 ...

  8. 命令行连接mysql时出现Authentication plugin ‘caching_sha2_password‘ cannot be loaded: 找不到指定的模块

    命令行连接mysql时出现Authentication plugin 'caching_sha2_password' cannot be loaded: 找不到指定的模块. 通过如下命令进入数据库 m ...

  9. navicat 远程连接docker mysql提示:Authentication plugin ‘caching_sha2_password‘ cannot be loaded

    navicat 远程连接docker mysql提示:Authentication plugin 'caching_sha2_password' cannot be loaded 1.docker启动 ...

  10. mysql 清空数据库所有表最简单的方法

    mysql 清空数据库所有表最简单的方法 drop database if exists dadabase_name; create database dadabase_name;

最新文章

  1. 人工智能的未来需要M1吗
  2. 硕博士生参加学术会议重要吗?如何选择?注意什么?
  3. [蓝桥杯2018初赛]乘积尾零-数论
  4. JDBC_设计架构_驱动类加载_建立Connection_效率测试
  5. 有一个php的类库网站_可以composer下载的,composer轻量级的HTTP开发库
  6. springcloud项目的启动顺序_Spring Cloud微服务项目完整示例,含注册中心,网关,断路器等等...
  7. Tips--Docker常用命令
  8. sqlserver触发器如何将一个库中的数据插入到另外一个库中
  9. Android系统信息获取 之十二:获取屏幕分辨率及密度
  10. [bzoj1791][ioi2008]Island 岛屿(基环树、树的直径)
  11. 刀片系统服务器优点,刀片服务器是什么?介绍ibm刀片服务器优点
  12. 金融期货具体的开户条件
  13. 小故事折射出大道理:风靡办公室的管理寓言
  14. java 卸载工具_java卸载工具下载
  15. 怎么用照片制作MV视频?把照片合集做成MV视频的软件,实用制作教程!
  16. [激光原理与应用-63]:激光器-光学-探测光、泵浦光和种子光三种光的区别
  17. 苹果高调入局中低端市场,国产手机如何“坚守”与“转身”?
  18. 3an推客CPC、CPM和CPS是什么意思?有什么区别
  19. Word文档中同一行放置两个图片且标题在同一行的方法
  20. 10 简单的猜数字游戏[1] (10 分)

热门文章

  1. Base64 在线编码解码
  2. 2021-2027全球与中国GPS智能手表市场现状及未来发展趋势
  3. 大学四年的学习规划目标
  4. 什么是软件危机?它有哪些典型表现?为什么会出现软件危机?
  5. 粥左罗教你从零开始学写作笔记系列
  6. 即时热榜——月薪3W+自媒体人的必备神器
  7. [转] 8 reasons why SPIR-V makes a big difference
  8. 各学科门类研究生专业深度分析
  9. 宝宝的个人博客开通了
  10. 澳洲网:澳高考生扎堆申请专业 热衷艺术及护理学位