前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[MYSQL] mysql 8.0.36 社区版 安装percona审计插件

[MYSQL] mysql 8.0.36 社区版 安装percona审计插件

原创
作者头像
大大刺猬
发布2024-07-15 13:09:57
1020
发布2024-07-15 13:09:57
举报
文章被收录于专栏:大大刺猬

导读

我记得之前测试mysql社区版安装percona审计插件是不行的(大概是8.0.33版本左右), 所以才写了个旁挂审计脚本. 但今天看到https://www.percona.com/blog/using-the-percona-audit-logging-plugin-on-mysql-community-8-0-x/ .....

本文是安装审计插件, 主要是记录连接信息(偏向监控). 如果还要根据规则阻止连接的话, 可以看audit-log-filter

安装和配置

安装

我们只需要审计插件, 所以下载mini版的percona-server即可. 下载地址: https://downloads.percona.com/downloads/Percona-Server-8.0/Percona-Server-8.0.36-28/binary/tarball/Percona-Server-8.0.36-28-Linux.x86_64.glibc2.17-minimal.tar.gz

审计插件位于: Percona-Server-8.0.36-28-Linux.x86_64.glibc2.17-minimal/lib/plugin/audit_log.so路径

安装插件的方法可参考: https://dev.mysql.com/doc/refman/8.0/en/plugin-loading.html

关于插件卸载: 之前有小伙伴问,uninstall plugin xxx卸载插件报错 ERROR 1702 (HY000): Plugin 'CONNECTION_CONTROL' is force_plus_permanent and can not be unloaded 是怎么回事, 其实是由于安装插件是使用的--plugin_name或者配置文件指定了相关参数, 这种就只能取消--plugin_name或者注释掉配置文件相关参数.也就是怎么安装的就怎么卸载. 命令行安装的就只能命令行卸载(配置文件没得相关参数,也就不会去注释了). 配置文件设置的就注释掉, 然后重启.

我们这里就使用命令行安装了, 方便卸载.

代码语言:shell
复制
# 下载percona-server
wget https://downloads.percona.com/downloads/Percona-Server-8.0/Percona-Server-8.0.36-28/binary/tarball/Percona-Server-8.0.36-28-Linux.x86_64.glibc2.17-minimal.tar.gz

# 解压percona-server
tar -xvf Percona-Server-8.0.36-28-Linux.x86_64.glibc2.17-minimal.tar.gz

# 拷贝审计插件到你的mysql软件目录
cp -ra Percona-Server-8.0.36-28-Linux.x86_64.glibc2.17-minimal/lib/plugin/audit_log.so /soft/mysql_3378/mysqlbase/mysql/lib/plugin
chown mysql:mysql /soft/mysql_3378/mysqlbase/mysql/lib/plugin/audit_log.so

登录数据库安装审计插件mysql -h127.0.0.1 -uroot -P3378 -p123456

代码语言:sql
复制
-- 安装
INSTALL PLUGIN audit_log soname 'audit_log.so';

-- 卸载(要重启才生效)
-- UNINSTALL PLUGIN audit_log;

-- 查看审计插件安装情况
SELECT * FROM information_schema.PLUGINS WHERE PLUGIN_NAME LIKE '%audit%'\G

配置

支持4种审计日志格式, 我们通常使用json或者csv格式. 如果要接入第三方软件, 可能json更适合; 如果仅人工看/shell脚本分析的话,就csv格式.

可以基于用户,sql,或者数据库来实现过滤.(旁挂的只能实现基于用户/sql, 还是非ssl).

代码语言:variables
复制
audit_log_exclude_accounts # user@host
audit_log_include_accounts

audit_log_exclude_commands
audit_log_include_commands

audit_log_exclude_databases
audit_log_include_databases

默认的审计规则audit_log_policyALL, 即记录登录信息和SQL信息. 可以配置为

ALL 我全都要

LOGINS 只要登录信息即可

QUERIES 只要SQL语句

NONE 啥都不记录

审计信息默认是存放在datadir下面的audit.log文件中. 对应参数: audit_log_file. (只读)

日志轮转

可以配置linux上的logrotate实现日志轮转, 也可以使用定时任务来做

通过参数audit_log_flush来刷新日志, 从而实现日志轮转. 可参考.(没做登录之类的验证了).

代码语言:shell
复制
# 刷新日志
mysql -h127.0.0.1 -P3378 -p123456 -e 'set global audit_log_flush=on;'

# 日志轮转
mv /data/mysql_3378/mysqldata/audit.log /data/mysql_3378/mysqldata/audit.log.$(date +%Y%m%d)

# 刷新日志(以生成相关文件)
mysql -h127.0.0.1 -P3378 -p123456 -e 'set global audit_log_flush=on;'

# 压缩(可选)
gzip /data/mysql_3378/mysqldata/audit.log.$(date +%Y%m%d)

例子

配置文件添加

代码语言:cnofig
复制
# audit
audit_log_file=/data/mysql_3378/mysqllog/dblogs/audit.log
audit_log_format=csv

重启数据库systemctl restart mysqld_3378

查看日志

建议

审计插件有时候还是挺有用的, 但会吃系统一部分资源.... (旁挂审计就没得这方面的影响了)

如果是不太繁忙或者比较重视安全的场景, 则推荐使用. 否则不推荐使用审计.

参考:

https://www.percona.com/blog/using-the-percona-audit-logging-plugin-on-mysql-community-8-0-x/

https://dev.mysql.com/doc/refman/8.0/en/plugin-loading.html

https://docs.percona.com/percona-server/8.0/audit-log-plugin.html

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 导读
  • 安装和配置
  • 安装
    • 配置
      • 日志轮转
      • 例子
      • 建议
      相关产品与服务
      云数据库 MySQL
      腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档