雅荷心语博客
雅荷心语
心之所向便是光
  • 首页
  • 前端之旅
  • 后端之路
  • 软件工具
  • 心灵鸡汤
  • 心路历程
  • 视频资料
  • 关于我们
    • 关于我
    • 关于我
  • 微信平台
    • 业务合作
  • 首页
  • 前端之旅
  • 后端之路
  • 软件工具
  • 心灵鸡汤
  • 心路历程
  • 视频资料
  • 关于我们
    • 关于我
    • 关于我
  • 微信平台
    • 业务合作
  • 关注本站
    • 微信
    • 微博
    • 腾讯微博
    • Twitter
    • Facebook
    • RSS订阅
Hi, 请登录     我要注册     找回密码

关于 mysql 怎么安装审计插件的记录

2021-07-03 分类:后端之路 / 启回静思 阅读(1063) 评论(0)

最近因为一些原因, mysql 需要安装审计插件来追踪数据;

花了将近 2 个下午的时间一直在安装, 查找各种资料, 因为各种问题始终安装不成功, 截止目前终于成功了,简单记录一下, 也希望以后有人需要安装的时候少走一些弯路;

注意以下是弯路部分:

网上找到找到最多的就是 mysql-audit-plugin 插件的安装,

如: https://www.cnblogs.com/gaoyanbing/p/14030395.html

需要先去::https://bintray.com/mcafee/mysql-audit-plugin/release/1.1.4-725#files

下载软件然后…., 实际上, 这个地址早已经失效了, 我还花了 10 块钱 去付费下载别人已经上传在空间的此插件, 最终还是安装不成功, 大概如下:

首先在安装过程中, 会遇到: ERROR 1123 (HY000): Can’t initialize function ‘audit’; Plugin initialization function failed.

即使我按照博客说的配置了很多东西, 还是会提示这个错误,

这个错误, 查了百度谷歌很多资料都是 初始化 audit_offset 时候的问题, 我还找到有人一点一点删除 

audit_offsets = 7824, 7872, 3632, 4792, 456, 360, 0, 32, 64, 160, 536, 7988, 4360, 3648, 3656, 3660, 6072, 2072, 8, 7056, 7096, 7080

从后到前面一个一个删除来测试, 删除到某一个就能成功 / 吐血.jpg, 每次修改都需要重启 mysql, 然后一点一点测试,

其实我最终还是没有成功,

再后来, 我查看 mysql 的 错误 log

Plugin ‘AUDIT’ registration as a AUDIT failed.

还是没有解决, 当然还有其他很多很多东西的尝试都没有成功, mysql 版本从 8.0, 换到 5.7, 换到 …5.5 , 当我快要放弃的时候,

查到另一个审计插件, MySQL Community Server

因为我发现: 为社区版提供审计的插件的主要有以下三个 McAfee MySQL Audit Plugin、Percona Audit Log Plugin、MariaDB Audit Plugin。

既然社区提供了多个插件, 都是可以做审计, 为什么要死抓住一个不放呢`

于是开始安装另一个;

首先我们查看自己 mysql 的版本, 找到后开始下载, 我当前的 mysql 已经是 5.5.62

于是找到 5.5.62 对应的 插件下载:

可以在这个网址寻找自己需要的版本: https://downloads.mariadb.org/mariadb/+releases/

下载成功后, 因为我是 liunx 系统, 从下载的包里面寻找 server_audit.so, 如果是 windows, 则需要寻找 server_audit.dll

我是直接搜索文档找到: 大概位置是在下载包里面的额 lib/plugins/server_audit.so

找到后直接把文件复制到 mysql 的插件目录里, 之后的安装方法和 mysql 安装其他插件都是一样的!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
mysql> SHOW GLOBAL VARIABLES LIKE 'plugin_dir';
+---------------+-------------------------------+
| Variable_name | Value                         |
+---------------+-------------------------------+
| plugin_dir    | /www/server/mysql/lib/plugin/ |
+---------------+-------------------------------+
1 row in set (0.00 sec)
 
mysql>  INSTALL PLUGIN server_audit SONAME 'server_audit.so';
Query OK, 0 rows affected (0.00 sec)
 
mysql> show variables like '%audit%';
+-------------------------------+-----------------------+
| Variable_name                 | Value                 |
+-------------------------------+-----------------------+
| server_audit_events           |                       |
| server_audit_excl_users       |                       |
| server_audit_file_path        | server_audit.log      |
| server_audit_file_rotate_now  | OFF                   |
| server_audit_file_rotate_size | 1000000               |
| server_audit_file_rotations   | 9                     |
| server_audit_incl_users       |                       |
| server_audit_loc_info         |                       |
| server_audit_logging          | OFF                   |
| server_audit_mode             | 1                     |
| server_audit_output_type      | file                  |
| server_audit_query_log_limit  | 1024                  |
| server_audit_syslog_facility  | LOG_USER              |
| server_audit_syslog_ident     | mysql-server_auditing |
| server_audit_syslog_info      |                       |
| server_audit_syslog_priority  | LOG_INFO              |
+-------------------------------+-----------------------+
16 rows in set (0.00 sec)

可以看到很丝滑的就装上了, 顺利的让我有点吃惊😲~~

之后就是对于插件的一些配置:

下面是简单的配置记录

1、安装成功,通过如下命令可以查看初始化参数配置。

mysql> show variables like ‘%audit%’;

2、执行如下命令开启mysql审计功能,

备注:指定哪些操作被记录到日志文件中

set global server_audit_events=’CONNECT,QUERY,TABLE,QUERY_DDL’
备注:开启审计功能
set global server_audit_logging=on

备注:默认存放路径,可以不写,默认到data文件下
set global  server_audit_file_path =/data/mysql/auditlogs/
备注:设置文件大小
set global server_audit_file_rotate_size=200000000

指定日志文件的数量,如果为0日志将从不轮转
set global server_audit_file_rotations=200

强制日志文件轮转
set global server_audit_file_rotate_now=ON

可到data文件下查看日志文件server_audit.log。

可从中查看各项操作,可以发现什么时间那个用户执行了什么操作,便于责任追究。

在控制台中用命令行配置的参数只对本次服务有效果,服务重启配置全部初始化了,因此想长久配置需要再my.ini文件(中添加相应的配置信息。配置信息如下,需要更多参数的可自行添加。需要添加到[mysqld]下方,重启服务配置生效。

#备注: 防止server_audit 插件被卸载

server_audit=FORCE_PLUS_PERMANENT

#备注:指定哪些操作被记录到日志文件中
server_audit_events=’CONNECT,QUERY,TABLE,QUERY_DDL’
server_audit_logging=on
server_audit_file_rotate_size=200000001
server_audit_file_rotations=200
server_audit_file_rotate_now=ON

 

参数配置说明:

详细请参考:
server_audit_output_type:指定日志输出类型,可为SYSLOG或FILE
server_audit_logging:启动或关闭审计
server_audit_events:指定记录事件的类型,可以用逗号分隔的多个值(connect,query,table),如果开启了查询缓存(query cache),查询直接从查询缓存返回数据,将没有table记录
server_audit_file_path:如server_audit_output_type为FILE,使用该变量设置存储日志的文件,可以指定目录,默认存放在数据目录的server_audit.log文件中
server_audit_file_rotate_size:限制日志文件的大小
server_audit_file_rotations:指定日志文件的数量,如果为0日志将从不轮转
server_audit_file_rotate_now:强制日志文件轮转
server_audit_incl_users:指定哪些用户的活动将记录,connect将不受此变量影响,该变量比server_audit_excl_users优先级高
server_audit_syslog_facility:默认为LOG_USER,指定facility
server_audit_syslog_ident:设置ident,作为每个syslog记录的一部分
server_audit_syslog_info:指定的info字符串将添加到syslog记录
server_audit_syslog_priority:定义记录日志的syslogd priority
server_audit_excl_users:该列表的用户行为将不记录,connect将不受该设置影响
server_audit_mode:标识版本,用于开发测试

若不知道最后审计 log 存在了哪里, 可以这么查看 mysql data 目录

1
show global variables like 'datadir';

找到后在此目录寻找: server_audit.log

默认插件是关闭的,需要手动开启:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
mysql> set global server_audit_logging=ON;
Query OK, 0 rows affected (0.00 sec)
 
mysql> show variables like '%audit%';
+-------------------------------+-----------------------+
| Variable_name                 | Value                 |
+-------------------------------+-----------------------+
| server_audit_events           |                       |
| server_audit_excl_users       |                       |
| server_audit_file_path        | server_audit.log      |
| server_audit_file_rotate_now  | OFF                   |
| server_audit_file_rotate_size | 1000000               |
| server_audit_file_rotations   | 9                     |
| server_audit_incl_users       |                       |
| server_audit_loc_info         |                       |
| server_audit_logging          | ON                    |
| server_audit_mode             | 1                     |
| server_audit_output_type      | file                  |
| server_audit_query_log_limit  | 1024                  |
| server_audit_syslog_facility  | LOG_USER              |
| server_audit_syslog_ident     | mysql-server_auditing |
| server_audit_syslog_info      |                       |
| server_audit_syslog_priority  | LOG_INFO              |
+-------------------------------+-----------------------+
16 rows in set (0.00 sec)
 
mysql>

关于需要开启那些操作的记录: 重点说明 server_audit_events

省略值全部事件类型都会记录到审计日志中,可选择事件类型才记录。

如 server_audit_events = query,table,query_ddl,query_dml

事件类型

CONNECT:连接、断开连接和失败的连接,包括错误代码

QUERY:以纯文本形式执行的查询及其结果,包括由于语法或权限错误而失败的查询

TABLE:受查询执行影响的表

QUERY_DDL:与QUERY相同,但只筛选DDL类型的查询(create、alter、drop、rename和truncate语句,create/drop[procedure/function/user]和rename user除外(它们不是DDL)

QUERY_DML:与QUERY相同,但只筛选DML类型的查询(do、call、load data/xml、delete、insert、select、update、handler和replace语句)

QUERY_DCL:与QUERY相同,但只筛选DCL类型的查询(create user、drop user、rename user、grant、revoke和set password语句)

QUERY_DML_NO_SELECT:与QUERY_DML相同,但不记录SELECT查询。(从1.4.4版开始)(do、call、load data/xml、delete、insert、update、handler和replace语句)

喜欢 (1) 赏 讨厌 (0)
分享到:更多 ()

相关推荐

  • nginx 负载均衡初了解
  • 关于代码自动更新的一次实验
  • 抖音发布视频增加 720 全景漫游教程
  • 自用phpstorm破解补丁
  • 三种微信小程序VR实现方法
  • 使用ffmpeg.wasm在前端html网页上压缩视频解决方案
  • mac pecl install 安装提示 Connection to `ssl://pecl.php.net:443′ failed: 解决方案
  • 要SSR? NUXT项目从初始化到部署服务器流程全记录

评论 抢沙发

取消

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
关于我

小天明 北京·朝阳 前端搬砖工程师

碎碎念):(来自公众号)

热门文章

  • 踩坑记录——iphone上safari开启隐身模式时localStorage变为只读-雅荷心语博客踩坑记录——iphone上safari开启隐身模式时localStorage变为只读2017-02-21评论(4)
  • 程序员是怎样一群人-雅荷心语博客程序员是怎样一群人2015-12-08评论(3)
  • vcard - 二维码名片的格式及扫码导入-雅荷心语博客vcard – 二维码名片的格式及扫码导入2016-05-05评论(2)
  • PHPStorm10 下载安装破解汉化-雅荷心语博客PHPStorm10 下载安装破解汉化2015-12-15评论(2)
  • call_user_func_array 这个函数什么时候用-雅荷心语博客call_user_func_array 这个函数什么时候用2016-09-02评论(2)
2023年3月
一 二 三 四 五 六 日
« 一    
 12345
6789101112
13141516171819
20212223242526
2728293031  

最新评论

  • 前端小武 6年前 (2017-04-06)说:
    我看到了layer
  • 丁艳平 6年前 (2017-03-03)说:
  • Dawn 7年前 (2016-09-16)说:
    call_user_func_array最后的例子是错哦,你用bc方法去调用类里 另外一个方法就知道问题所在了。情况1.调用非静态方法 第一个参数应该传[类的实例,调用方法] (既然有类实例了直接-&
  • Dawn 7年前 (2016-06-21)说:
    tp框架设置了全局捕获异常的,这也没什么。坑的是 他捕获了异常。然后全部返回404。。。不知道的 还以为自己网站被删除了
  • Dawn 7年前 (2016-05-17)说:
    构造函数里的判断 用异常机制可能更好一些

左邻右舍

  • Brian's Blog
  • 易水寒
  • 楼教主
  • 贤心
  • 阿米龙

雅荷心语博客 -心之所向便是光

联系我们关于我们

© 2023 雅荷心语博客   网站地图

emlogdux_heademlogdux_footer