数据库内置审计功能

作为一名dba,有时候,总会遇到数据库某个库,某个表,某个字段异常,或者数据被莫名的删除了,这个时候大家各种推断是不是bug了啊,是不是被黑了啊。。。这个时候一个审计功能就凸显出来了。

mariadb数据库对审计插件(server_audit.so)支持比较良好,今天我们进行一个简单安装和测试

安装方法也很简单:INSTALL SONAME "server_audit.so"

这样就安装完成了,我们可以看看对应的参数变量

这些参数和变量都是可以动态设置的,具体参数说明,见官网:https://mariadb.com/kb/en/mariadb/server_audit-system-variables/

一般我们主要设置一下几个参数就可以了

set  global server_audit_events = QUERY  /*这个参数有三个值connect,table,query

set  global server_audit_file_rotate_size = 524288000  /*每个日志文件的大小

sset  global  erver_audit_file_rotations = 200

set  global  server_audit_file_path  ="/data/mysql/auditlog/server_audit.log"  /*log文件路径   必须保证/data/mysql/auditlog/这个路径是存在的!而且 chown mysql.mysql  ,否则将 开启审计功能 后,将导致mysql报错,甚至服务挂掉!

set  global  server_audit_logging = 1   /*开启审计功能    强烈建议:在设置好以下参数完成后,再开启

设置完成后,再将对应参数添加到配置文件中

server_audit_logging = 1

server_audit_events = QUERY

server_audit_file_rotate_size = 524288000

server_audit_file_rotations = 200

server_audit_file_path  =/data/mysql/auditlog/server_audit.log

下面我们看看实际效果,对比一下server_audit_events这个参数connet,table,query三个不同值的日志对比;

1.参数为server_audit_events= query时

日志内容:
20161229 11:35:39,localhost.localdomain,root,localhost,42,745,QUERY,mysql,‘show databases‘,0
20161229 11:35:55,localhost.localdomain,root,localhost,42,746,QUERY,mysql,‘create database yhtest‘,0
20161229 11:36:03,localhost.localdomain,root,localhost,42,747,QUERY,mysql,‘SELECT DATABASE()‘,0
20161229 11:36:03,localhost.localdomain,root,localhost,42,749,QUERY,yhtest,‘show databases‘,0
20161229 11:36:03,localhost.localdomain,root,localhost,42,750,QUERY,yhtest,‘show tables‘,0
20161229 11:36:42,localhost.localdomain,root,localhost,42,751,QUERY,yhtest,‘create table yhtest(a int primary ,b int)‘,1064
20161229 11:36:56,localhost.localdomain,root,localhost,42,752,QUERY,yhtest,‘create table yhtest(a int primary key ,b int)‘,0
20161229 11:37:35,localhost.localdomain,root,localhost,42,753,QUERY,yhtest,‘insert into yhtest value(1,1),(2,2),(3,3)‘,0
20161229 11:37:46,localhost.localdomain,root,localhost,42,754,QUERY,yhtest,‘select * from yhtest‘,0
20161229 11:38:07,localhost.localdomain,root,localhost,42,755,QUERY,yhtest,‘delete from yhtest where a=1‘,0
20161229 11:38:15,localhost.localdomain,root,localhost,42,756,QUERY,yhtest,‘drop table yhtest‘,0
20161229 15:45:07,localhost.localdomain,root,localhost,42,757,QUERY,yhtest,‘show variables like \‘server%\‘‘,0

2.参数为server_audit_events=connect时                                                                                                        20161229 16:09:50,localhost.localdomain,root,localhost,42,0,DISCONNECT,yhtest,,0
20161229 16:09:54,localhost.localdomain,root,localhost,43,0,CONNECT,,,0
20161229 16:11:37,localhost.localdomain,root,localhost,43,0,DISCONNECT,yhtest2,,0
20161229 16:11:39,localhost.localdomain,root,localhost,44,0,CONNECT,,,0
20161229 16:12:06,localhost.localdomain,root,localhost,44,0,DISCONNECT,mysql,,0

3.参数为server_audit_events=table时                                                                                                    20161229 16:17:52,localhost.localdomain,root,localhost,47,857,CREATE,yhtest,t2,
20161229 16:17:59,localhost.localdomain,root,localhost,47,858,WRITE,mysql,table_stats,
20161229 16:17:59,localhost.localdomain,root,localhost,47,858,WRITE,mysql,column_stats,
20161229 16:17:59,localhost.localdomain,root,localhost,47,858,WRITE,mysql,index_stats,
20161229 16:17:59,localhost.localdomain,root,localhost,47,858,DROP,yhtest,t2,
20161229 16:18:04,localhost.localdomain,root,localhost,47,859,CREATE,yhtest,t3,
20161229 16:18:27,localhost.localdomain,root,localhost,47,860,WRITE,yhtest,t3,
20161229 16:19:04,localhost.localdomain,root,localhost,47,861,WRITE,yhtest,t3,
20161229 16:19:18,localhost.localdomain,root,localhost,47,862,WRITE,mysql,table_stats,
20161229 16:19:18,localhost.localdomain,root,localhost,47,862,WRITE,mysql,column_stats,
20161229 16:19:18,localhost.localdomain,root,localhost,47,862,WRITE,mysql,index_stats,
20161229 16:19:18,localhost.localdomain,root,localhost,47,862,DROP,yhtest,t3,

从上面可以看出,我们需要一般我们使用query就足够了,需要注意的是我们在使用这个插件的时候需要注意磁盘空间,如果数据库操作频繁,可能产生大量的日志!

时间: 2024-10-22 00:26:19

数据库内置审计功能的相关文章

数据库内置表常见SQL记录

学习数据库内置的一些视图或者表来查询数据库的具体信息. 比如 用户,表空间,表,字段,主外键,索引,数据文件,日志文件,控制文件 耗时SQL 客户端连接 死锁的SQL等 通过这些内置数据了解oracle,进而对其优化. ========================================================== SELECT * FROM user_tables --查询表 --all_tables dba_tables SELECT * FROM user_tab_co

SQL server数据库内置账户SA登录设置

SQL server数据库内置账户SA登录不了 设置SQL Server数据库给sa设置密码的时候  提示18456 解决步骤: 第二步:右击sa,选择属性: 第三步:点击状态选项卡:勾选授予和启用.然后确定. 第四步:右击实例名称(就是下图画红线的部分),选择属性 第五步:点安全性,确认选择了SQL SERVER 和Windows身份验证模式. 最后验证sa用户登录  成功~

oracle常用数据库内置函数

函数 返回值 样例 显示 CEIL(n) 大于或等于数值n的最小整数 SELECT CEIL(10.6) FROM TABLE_NAME; 11 FLOOR(n) 小于等于数值n的最大整数 SELECT FLOOR (10.6) FROM TABLE_NAME; 10 MOD(m,n) m除以n的余数,若n=0,则返回m SELECT MOD (7,5) FROM TABLE_NAME l; 2 POWER(m,n) m的n次方 SELECT POWER (3,2) FROM TABLE_NAM

Oracle数据库内置函数

--ORACLE内置函数:单行函数,集合函数--1.绝对值,取余,判断数据正负函数,SELECT ABS(100),ABS(-100),ABS('100') FROM DUAL;SELECT MOD(5,2) MOD(8/3,5),MOD('10',5),MOD(-10,6),MOD(1,0) FROM DUAL;SELECT SIGN('9'),SIGN(-9),SIGN(0.00),SIGN(-2*'9') FROM DUAL; --三角函数SELECT COS(3.1415926),COS

数据库内置视图或者表结构在开发中的使用场景

1.查询用户的所有表 2.查询表关系,外键,主键,约束条件 ========================================================= oracle数据库: String reSql = "SELECT A.TABLE_NAME AS P_TABLE_NAME,B.COLUMN_NAME AS P_COLUMN_NAME,C.TABLE_NAME AS F_TABLE_NAME,"+   "D.COLUMN_NAME AS F_COLU

oracle数据库内置函数之数值函数、字符函数、日期函数、转换函数及其在查询语句中的运用

数值函数: 1.四舍五入函数round() from dual:一行一列组成 select round(23.4) from dual;--默认不写m表示m为0 select round(23.45,1) from dual;--1表示保留小数点后一位,那么是小数点的第二位四舍五入 select round(23.45,-1) from dual;---1表示小数点前一位四舍五入取整,前一位是3四舍五入为20 2.取整函数: select ceil(23.45),floor(23.45) fro

解析大型.NET ERP系统 数据审计功能

数据审计,英语表达是Audit,是追踪数据变化的过程,记录数据变化前后的值,供参考分析.通过设置,ERP可以追踪一个表的所有字段的变化,也可以只记录指定的字段的值变化.欧美企业每年都有独立的审计部门,从总经理到下层部门员工,逐个审查过去发生的经济业务的帐面数据与实际是否一致.ERP中的审计功能,通常会记录下一个表字段的值的变化.ERP系统通过LLBL Gen Pro ORM框架做数据访问层,先了解ORM提供的数据审计功能. 审计功能的两个重要部分:记录的变化以及导致变化的动作,持久化变化的数据.

SQL Server 审计功能-记录所有的操作记录

SQL Server 审计-记录所有的操作记录 说到审计这个话题,相信作为一个企业管理员都知道,比如一般作为一个AD管理员的话,一般都会通过Policy开启审计功能,记录一些自定义的事务日志.对于SQL Server来说,审计也是一样的,SQL Server审计对象收集单个实例的服务器或数据库级的动作和行为监控组. 审计是在SQL Server实例级. 可以有多个审计/ SQL服务器实例.当你定义一个审计,你指定位置的输出结果. 这是审计目标. 审计是在创建的禁用状态,不会自动审计任何行动. 启

VS Code 折腾记 - (7) 内置Debug功能深入【调教angular-cli 最新版】

前言 很多小伙伴说用了打包工具(Webpack)之后,断点调试相当痛苦: 常规的方式无非是debugger,console.log()大法: 但是,vscode这货天生支持debug功能,不用白不用,今天我就说说怎么调教angular-cli; 题外话(号外) 最近vscode又更新了..最新的版本是1.10.2;不详细解释,点一下; 引入了minimap(这个好啊).在配置文件里面启用"editor.minimap.enabled": true;当然还有一些额外的小地图参数 内置JS