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

2024年 7月 15日 76.0k 0

导读

我记得之前测试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路径
[MYSQL] mysql 8.0.36 社区版 安装percona审计插件-1

安装插件的方法可参考: 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或者注释掉配置文件相关参数.也就是怎么安装的就怎么卸载. 命令行安装的就只能命令行卸载(配置文件没得相关参数,也就不会去注释了). 配置文件设置的就注释掉, 然后重启.

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

# 下载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

-- 安装
INSTALL PLUGIN audit_log soname 'audit_log.so';

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

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

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

配置

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

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

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来刷新日志, 从而实现日志轮转. 可参考.(没做登录之类的验证了).

# 刷新日志
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)

例子

配置文件添加

# audit
audit_log_file=/data/mysql_3378/mysqllog/dblogs/audit.log
audit_log_format=csv

重启数据库systemctl restart mysqld_3378
查看日志
[MYSQL] mysql 8.0.36 社区版 安装percona审计插件-3

建议

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

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

参考:

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

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论