MySql数据库之审计(开启log+设置init-connect实现无插件审计)

MySQL数据库审计日志功能开启指南 阅读详情

目录

一、查询审计配置情况

二、永久开启审计

三、临时开启审计

四、设置init-connect

1、创建用于存放连接日志的数据库和表

2、授权某个用户拥有对审计表的select和insert权限

3、设置init_connect参数

五、验证

六、番外

注:有关MySql数据库的其他操作请参见MySql目录进行查找。


一、查询审计配置情况

show global variables like 'log_timestamps';
show global variables like '%general%';

解释:可以看到 log 时间戳是系统时间;此时 log 功能没打开;log 文件放在/var/lib/mysql/jdh.log下,注意这个 log 存放路径是默认的,每个人不一样,根据你自己的情况而定。


二、永久开启审计

注:若想系统重启后还能生效,就需要按如下操作,若临时用一下只需参看【三、临时开启审计】。

vim /etc/mysql/my.cnf
在/etc/mysql/my.cnf中添加下述配置

[mysqld]
general_log = on                                          // on为开启;off为关闭
general_log_file = /var/lib/mysql/jdh.log         // 审计信息存储位置
log_timestamps = SYSTEM                                // 设置日志文件的输出时间为地方时

解释:经验证,其实在mysql中只要打开log开关就会一直开着,也无需在配置文件中进行配置。

注意:上方的 my.cnf 配置文件为我的 linux 服务器上的 mysql 配置文件默认地址,不同系统和不同版本的 mysql 可能不一样。


三、临时开启审计

在mysql中执行以下命令
set global general_log = on;
set global general_log_file = /var/lib/mysql/jdh.log     注:log 保存文件需要改成你自己的,一般是默认路径,就不用改了。
set global log_timestamps = SYSTEM;

解释:基本会默认时间戳和 log 文件位置。大多数只需要第一条命令打开 log 开关就行了。

到此为止我们已经打开了审计得功能,但这只是记录了所有的对数据库的操作,所以接下来我们将通过 init-connect+binlog 来实现相对完整的审计功能。

四、设置init-connect

1、创建用于存放连接日志的数据库和表

create database auditlog;

create table auditlog.t_audit(
  id int not null auto_increment,
  thread_id int not null,
  login_time timestamp,
  localname varchar(50) default null,
  matchname varchar(50) default null, 
  primary key (id)
)ENGINE=InnoDB default charset=utf8 comment '审计用户登录信息';

2、授权某个用户拥有对审计表的select和insert权限

列出授权所有用户的语句:
select concat("grant insert on auditlog.t_audit to '",user,"'@'",host,"';") from mysql.user;  #拼结授权语句
注:这条语句只是列出了所有语句,需要手动复制再授权一下。
授权某个用户的格式:
grant select,insert on auditlog.t_audit to user@localhost identified by ‘password’;

先创建一个临时用户进行验证:

CREATE USER U1;

再给用户U1赋予对表Student操作的一定权限:

GRANT SELECT, DELETE ON TABLE Student TO U1;

所以以上授权为例:grant select,insert on auditlog.t_audit to U1;

注意: 对于所有的普通级别的用户,必须全部都要对日志表具有读写权限, 否则将导致没有权限的用户无法使用数据库。

3、设置init_connect参数

set global init_connect='insert into auditlog.t_audit(id,thread_id,login_time,localname,matchname) values(null,connection_id(),now(),user(),current_user());';

查看设置成功:

注:若想在系统重启后还能生效,可以并在配置文件中增加如下语句,临时使用则跳过这个步骤

init-connect='insert into auditlog.t_audit(id,thread_id,login_time,localname,matchname) values(null,connection_id(),now(),user(),current_user());'

以上语句以便下次重启时能生效。

五、验证

我们使用新用户 U1 登陆,查看审计表 auditlog.t_audit 是否记录了本次登陆,并尝试能否删除。

接下来使用本用户进行一系列的操作,然后退出。

进入 log 查看删除记录,找出删除的那条记录时间。

登陆 root 用户,查看审计表 auditlog.t_audit 并找出删除记录的人。

发现用户 U1 在2019-05-07 15:18:56 登陆了。

而查看 log 日志发现用户 U1 用户在登陆期间做了删除操作,且登陆时间与 log 表中记录一致,且线程 ID 也一致。铁证如山!

六、番外

access-log表如何维护?

由于是一个log系统,推荐使用archive存储引擎,有利于数据厄压缩存放。如果数据库连接数量很大的话,建议一定时间做一次数据导出,然后清表。

为什么开启了已经保存了所有的操作和用户信息还需要再建立一个表保存用户的登陆信息呢?

1、无论sql有无语法错误,只要执行了就会记录,导致记录大量无用信息,后期的筛选有难度。因此加了表后可以根据一个大体的操作时间来进行筛选出这个时间段中执行这个操作的登陆用户的thread_id,然后再在表中查找这个thread_id号是哪个用户登陆的就可以很快筛选出执行具体某个操作的用户了。

2、因为新建的表普通用户没有权限删除记录,而log文件时可以删除记录的,所以若没有审计表的话若普通用户能接触保存log的那台主机,则能手动删除。

注:有关MySql数据库的更多其他操作请参见MySql目录进行查找。(建议收藏)

参考博文:

mysql数据库开启审计功能_背锅浩的博客-优快云博客_mysql开启审计功能

mysql基于init-connect+binlog完成审计功能 - 泽锦 - 博客园

一键开启mysql的审计功能(无需安装插件) 本文所使用数据库为mysql8.0,5.x版本的mysql上没试过一下步骤调用审计功能 无需下载任何插件,两行命令就能搞定 一、首先查看审计配置情况 show global variables like 'log_timestamps'; show global variables like '%general%'; 输入命令后结果如下: log_timestamps表示记录审计日志的时间... 阅读详情

相关推荐

如何实现MySQL数据库审计?

mysql与MariaDB 的版本对应很重要,低版本的容易导致数据库奔溃,楼主选择的是5.7.17版本的mysql数据库、MariaDB 的版本是5.5.57下载路径https://downloads.mariadb.org/mariadb/5.5/从Binlog中可以得知删除Test2表对应的threadid是8,根据ThreadID在审计表里查看用户的登录信息,可以得知这个删除操作是user001用户在本机执行的操作。在MySQL中,每个连接都会先执行init_connect进行连接的初始化,

weixin_54233011的博客 1117

MySql开启日志审计功能三种方法——筑梦之路

mysql 日志审计功能有三种方式 1.开启general_log 2.BinLog+Init_connect 3.审计插件 开启general_log set global general_log=on #检查验证 show variables like '%general_log%'; 弊端:只要用户执行了操作,无论对错,MySQL就会记录日志,这样的话日志量会非常庞大,对数据库效率有影响 BinLog+init_connect方式 BinLog是MySQL操作时留下的日志,BinL.

筑梦之路 1万+

开源日志审计系统_详解mysql数据库审计特点、实现方案及审计插件部署演示

概述数据库审计(简称DBAudit)能够实时记录网络上的数据库活动,对数据库操作进行细粒度审计的合规性管理,对数据库遭受到的风险行为进行告警,对攻击行为进行阻断。它通过对用户访问数据库行为的记录、分析和汇报,用来帮助用户事后生成合规报告、事故追根溯源,同时加强内外部数据库网络行为记录,提高数据资产安全。数据库审计是数据库安全技术之一,数据库安全技术主要包括:数据库漏扫、数据库加密、数据库防火墙、数...

weixin_39605905的博客 2185

linux系统centos7服务器开启mysql数据库审计

开启审计 vim /etc/my.cnf 在/etc/my.cnf中添加下述配置 [mysqld] general_log = on // on为开启;off为关闭 general_log_file = /var/log/generalLog.log // 审计信息存储位置 log_timestamps = SYSTEM //设置日志...

mangobot的博客 5055

MySQL 开启用户审计功能

通过开启 MySQL 的审计功能,你可以记录数据库中发生的各种事件和操作。记得根据实际需求调整审计日志的配置,并定期查看和分析审计日志,以保护你的数据库安全。其中之一是审计功能,它可以记录数据库中发生的各种事件和操作,以便帮助管理员进行安全监控和故障排查。如果你的 MySQL 版本早于此版本,你需要升级到支持审计功能的版本。一旦 MySQL 审计功能开启,并有用户执行数据库操作,审计日志将开始记录相关事件。注意,审计日志的存储位置取决于你的 MySQL 配置。参数来指定审计日志的路径和文件名。

MbfrDeveloper的博客 3757

AI+Xmind自动生成测试用例(思维导图格式)

最后:我是Walker,一个热爱分享编程知识的程序员,希望能够帮助到你!

Think_and_work的博客 2332

mysql5.7审计功能开启_干货 | MySQL数据库安全之审计

每家公司都希望业务高速增长,最好能出几个爆款产品或者爆款业务,从而带动公司营收高速攀升。但站在数据库管理员的角度,这却是实实在在的压力,业务高速增长必然带来数据量的暴增。数据库系统的选型和设计是支撑整个业务系统的重要因素。MySQL数据库是基于云原生的数据库产品之一,云原生为云数据库提供了重要动力,相比于传统自建数据库,云数据库比单个数据库具有更大的弹性和可扩展性。数据库审计主要用于监视...

weixin_39628380的博客 2440

MaxKey+JeecgBoot单点登录实战:手把手教你从零配置到账户同步

本文提供MaxKey与JeecgBoot单点登录(SSO)的实战整合指南。详细讲解从MaxKey应用注册、JeecgBoot前后端改造,到最终实现账户同步的完整步骤,重点解决Shiro配置、令牌交换等关键问题,帮助企业构建统一、可扩展的身份管理体系。

weixin_29258297的博客 540

Mysql8之无插件方式审计

需求: 在mysql 8中记录用户对数据库表的操作内容,操作时间,客户端源ip地址。 在mysql5.7完美地采用MariaDB的server_audit插件来记录{时间,节点,用户,源IP,事件类型,库,语句,影响行数}等审计,但从mysql8开始已不支持该插件,同类的第三方插件也无法使用。 目前找到的方式:[ binlog + init-connect ],binlog可以审计到所有数据记录及表结构变更相关的记录,但,不记录连接的信息,要通过额外的手段来记录,比如show full proces

endzhi的博客 4014

GD32单片机引脚复用指南:如何让JTAG接口的PA15/PB3发挥第二功能?

本文详细介绍了GD32F103Cx系列单片机如何通过AFIO模块进行引脚复用,特别是将默认用于JTAG调试接口的PA15、PB3等引脚释放为普通IO或复用功能引脚。文章从原理出发,结合代码实践,讲解了如何配置调试端口重映射,将JTAG引脚安全地转换为GPIO或定时器通道,并提供了常见问题排查与最佳实践,帮助开发者高效利用有限的引脚资源。

nept的博客 807

鼎捷T100——二次开发:维护作业添加非实体字段

非实体字段添加

weixin_52342654的博客 1156

MySQL之添加日志审计功能

数据库审计主要用于监视并记录对数据库服务器的各类操作行为,并记入审计日志或数据库中以便日后进行跟踪、查询、分析,以实现对用户操作的监控和审计。审计是一项非常重要的工作,也是企业数据安全体系的重要组成部分。 MySQL企业版自带审计功能,但是需要付费。MySQL社区版没有审计功能,基于成本的考虑,很多用户采用社区版MySQL作为业务系统数据库。采用社区版MySQL如何实现重要的审计功能,本文从自建和...

灬紫荆灬 9843

AUTOSAR从入门到精通-诊断事件管理模块(DEM)(四)

在 Autosar 中,诊断事件是指在车辆电子系统中发生的特定事件,可以用于诊断和故障排除。DEM模块通过EventId和相关的EventName来表示每个诊断事件。诊断事件的状态代表了监控器的结果,DEM模块通过RTE或其他BSW模块从SW-C接收监控器的结果。DEM模块使用EventId来管理系统中每个诊断事件的状态,并对各个测试结果执行所需的操作,例如存储冻结帧/拓展帧。所有监控器和BSW模块使用EventId作为符号化的EventName来管理诊断事件。

getusushu的博客 1508

MySQL的审计功能实现方案

数据库的安全(可以参考《数据库安全的重要性》、《MySQL的安全解决方案》、《提供使用国密算法的MySQL》)对企业来说,是至关重要的,审计是其中一种保障数据库安全的手段。熟悉Oracle的朋友可能都知道,Oracle内置支持audit功能,可以提供细粒度到字段的审计。开源社区的这篇文章《技术分享 | MySQL 审计功能实现方案》为我们介绍了MySQL中,对于审计功能的实现方式,值得借鉴。背景鉴...

bisal的专栏 2140

【EPS精品教程】EPS2016三维测图版安装教程(附EPS2016安装包下载地址)

EPS地理信息工作站是北京清华山维新技术开发有限公司历经十五年精心研发和打造,为满足“以地理信息服务为中心”的信息化测绘生产需求而推出的测绘生产活动多种业务模块集成化软件系统。主要功能有:(1)测绘与地理信息多业务模块集成管理;(2)多元多尺度多种类数据集成管理;(3)跨平台异构数据转换;(4)数据监理;(5)自动缩编与综合;(6)坐标转换与动态投影;(7)地理信息模板定制;(8)GIS地理信息描述与CAD图形表达一体化支持;(9)GIS数据库更新维护;(10)图形打印与地图出版。 一、安装过程 EP..

智慧空间实验室 2万+

机器学习算法原理:详细介绍各种机器学习算法的原理、优缺点和适用场景

现在,我们将进入到机器学习的核心部分——算法原理。在本篇文章中,我们将详细探讨各种机器学习算法的原理、优缺点和适用场景。

a871923942的博客 2965

MySQL数据库的安全审计

问题: 解决:参考链接https://www.jianshu.com/p/9ae11743e269 主要内容: 数据库审计主要用于监视并记录对数据库服务器的各类操作行为,并记入审计日志或数据库中以便日后进行跟踪、查询、分析,以实现对用户操作的监控和审计。审计是一项非常重要的工作,也是企业数据安全体系的重要组成部分。 MySQL企业版自带审计功能,但是需要付费。MySQL社区版没有审...

TivonaLH的博客 2431

【异常】OpenClaw 飞书端 OpenClaw: access not configured. Pairing code: [] Ask the bot owner to approve with

摘要: OpenClaw飞书机器人交互中出现的access not configured报错,是因用户或组织未配置访问权限触发的拦截提示。报错包含组织单元ID和配对校验码,需管理员审批开通权限。普通用户需提交完整报错信息给管理员处理;管理员可通过执行标准化命令单次审批,或批量配置组织白名单优化权限管理。建议提前梳理权限范围、及时同步组织架构变更,并定期审计权限列表以确保安全合规。

奶爸的编程之路,也就一周冷个三天 370

mysql审计binlog_通过init_connect + binlog 实现MySQL审计功能

一、简介1、概述mysql本身已经提供了详细的sql执行记录–general log ,但是开启它有以下几个缺点:1)无论sql有无语法错误,只要执行了就会记录,导致记录大量无用信息,后期的筛选有难度。2)sql并发量很大时,log的记录会对io造成一定的印象,是数据库效率降低。3)日志文件很容易快速膨胀,不妥善处理会对磁盘空间造成一定影响。2、原理1) 由于审计的关键在于DML语句,而所有的DM...

weixin_31995337的博客 404

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

干货 | MySQL数据库安全之审计

每家公司都希望业务高速增长,最好能出几个爆款产品或者爆款业务,从而带动公司营收高速攀升。但站在数据库管理员的角度,这却是实实在在的压力,业务高速增长必然带来数据量的暴增。数据库系统的选型和设计是支撑整个业务系统的重要因素。 MySQL数据库是基于云原生的数据库产品之一,云原生为云数据库提供了重要动力,相比于传统自建数据库,云数据库比单个数据库具有更大的弹性和可扩展性。 数据库审计主要用于监视...

京东科技开发者 1108

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

mysql审计开启--两种方法

第一种方法:安装插件的方式 这里使用的是macfee的mysql audit插件,虽然日志信息比较大,对性能影响大,但是如果想要开启审计,那也应该忍受了。介绍几个参考地址: wiki首页:https://github.com/mcafee/mysql-audit/wiki 插件二进制包下载:https://bintray.com/mcafee/mysql-audit-plugin/release...

yimenglin的博客 2157

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

mysql8审计_2.3.8 mysql安全之审计

6、 MySQL安全之审计管理审计:记录你的操作,方便以后查证据,但是生产环境数据库本身不建议开启,影响性能,但可以使用第三方审计6.1 开源审计功能 mysql Audit Plugingmysq15.7企业版自带审计功能,需要付费社区版可以用开源的 mysqL Audit Pluging( McAfee提供的)下载地址:https://github.com/mcafee/mysql-audit...

weixin_30722051的博客 860
上一篇: Web3安装出现Visual C++ 14.0 is required解决方案
下一篇: 费马小定理(介绍+证明+逆元代码实现)
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值