Mysql5.7安装server_audit审计

本文详细介绍如何在MySQL中配置MariaDB的server_audit插件,实现数据库操作的全面审计。覆盖插件安装、配置、日志查看及参数详解,适用于MySQL社区版缺乏审计功能的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   

目录

1. 查看插件安装目录

2 .提取mariadb审计插件并放置插件目录

3. mysql安装server_audit.so插件

4. 开启审计,写入配置文件

5. 查看server_audit.log审计日志文件

6. server_audit参数说明

7. 卸载审计插件

8. Windows版


  由于MySQL的社区版不支持审计系统,可通过第三方插件实现,此次采用MariaDB的server_audit插件来记录{时间,节点,用户,源IP,事件类型,库,语句,影响行数},注:从mysql8开始已不支持该插件。(好像mysql-5.7.34后也不支持了)

1. 查看插件安装目录

mysql>  show global variables like 'plugin_dir';
+---------------+-------------------------------+
| Variable_name | Value                         |
+---------------+-------------------------------+
| plugin_dir    | /opt/mysql/5.7.18/lib/plugin/ |

2 .提取mariadb审计插件并放置插件目录

  (版本并不通用,自行根据版本号提取,这里就没总结了)

wget  https://mirrors.tuna.tsinghua.edu.cn/mariadb//mariadb-10.5.3/bintar-linux-x86_64/mariadb-10.5.3-linux-x86_64.tar.gz
tar -zxvf   mariadb-10.5.3-linux-x86_64.tar.gz
cp  ./mariadb-10.5.3-linux-x86_64/lib/plugin/server_audit.so  /opt/mysql/5.7.18/lib/plugin/
chmod  +x  /opt/mysql/5.7.18/lib/plugin/server_audit.so

3. mysql安装server_audit.so插件

mysql>  install plugin server_audit soname 'server_audit.so';
Query OK, 0 rows affected (0.02 sec)           ##也可以在my.cnf 加载插件方式安装

查看当前MySQL插件情况
mysql>  show plugins;

4. 开启审计,写入配置文件

vi  /etc/my.cnf

### 审计 ###
server_audit_logging = ON                 #开启日志记录,默认是关闭
server_audit = FORCE_PLUS_PERMANENT        #防止插件被卸载
server_audit_file_path = server_audit.log     #定义审计日志文件名
server_audit_file_rotate_now = OFF         #是否强制切割审计日志
server_audit_file_rotate_size = 1073741824   #定义切割审计日志的文件大小1073741824=1GB
server_audit_file_rotations = 0              #定义审计日志的轮询个数,0为不轮询

重启mysql生效!

如不便重启mysql,

临时开启  mysql>   set  global  server_audit_logging=on;
临时关闭  mysql>   set  global  server_audit_logging=off;

5. 查看server_audit.log审计日志文件

默认存放于mysql的data目录下,

mysql>   show global variables like 'datadir';

测试查看日志

tail  /opt/mysql/data/server_audit.log

查看server_audit插件参数

mysql>   show variables like '%server_audit%';

6. server_audit参数说明

server_audit_events :指定记录事件的类型,可以用逗号分隔的多个值
server_audit_excl_users : 该列表的用户[行为]将不记录,connect信息将不受该设置影响
server_audit_file_path :使用该变量设置存储日志的文件,可以指定目录,默认存放在数据目录的server_audit.log文件中
server_audit_file_rotate_now :知否立即切割日志
server_audit_file_rotate_size :限制日志文件的大小
server_audit_file_rotations :指定日志文件的数量,如果为0日志将从不轮转
server_audit_incl_users : 指定哪些用户的活动将记录,connect将不受此变量影响,该变量比server_audit_excl_users优先级高
server_audit_loc_info :
server_audit_logging :启动或关闭审计ON/OFF
server_audit_mode :标识版本,用于开发测试
server_audit_output_type :指定日志输出类型,可为SYSLOG或FILE,当为syslog时记录到/var/log/messages
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

重点说明 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. 如果开启了查询缓存(query cache),查询直接从查询缓存返回数据,将没有table记录

2. 由于除了DDL和DML之外还有其他类型的查询,因此将查询DDL和查询DML选项一起使用并不等同于使用查询。从Audit插件的1.3.0版开始,有用于记录查询的DCL类型(例如GRANT和REVOKE语句)的QUERY_DCL选项。在同一版本中,添加了server_audit_query_log_limit变量,以便能够设置日志记录的长度。以前,由于查询字符串较长,日志条目将被截断。

7. 卸载审计插件

如my.cnf 有相关配置,先清空重启再卸载。

mysql>  UNINSTALL PLUGIN server_audit;

其他说明

在my.cnf 设置 plugin_load = server_audit=server_audit.so    #载入审计插件,

这可以代替在mysql>  install plugin server_audit soname 'server_audit.so';

8. Windows

也同一个套路,下载地址
https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-5.5.68/winx64-packages/mariadb-5.5.68-winx64.zip

提取 mariadb-5.5.68-winx64/lib/plugin/中的 server_audit.dll 文件

9.参考文献

MariaDB Audit Plugin - Log Settings - MariaDB Knowledge Base

MySQL5.7审计功能windows系统_ITPUB博客

<think>好的,我现在需要帮助用户在Docker中为MySQL 5.7安装audit plugin。首先,我得回忆一下MySQL审计插件相关知识。记得MySQL企业版有官方的审计插件,但社区版可能需要用第三方插件,比如MariaDBserver_audit用户用的是MySQL 5.7,可能需要确认插件的兼容性。 接下来,用户使用的是Docker环境,所以需要思考如何在容器中安装插件。通常的步骤可能是:获取插件文件、修改MySQL配置、加载插件。但Docker容器是无状态的,每次重启可能会重置,所以需要持久化数据和配置。 首先,用户需要创建一个自定义的Docker镜像。他们可能需要编写Dockerfile,基于官方的MySQL 5.7镜像,然后在其中添加插件。或者,他们可以在运行容器时挂载插件文件到指定目录,比如/usr/lib/mysql/plugin/。不过,MySQL可能需要插件文件位于特定位置,可能需要复制到容器内的目录。 然后,获取插件文件。如果是MariaDBserver_audit.so,需要确认版本兼容性。可能需要从MariaDB安装包中提取,或者找到预编译的版本。用户需要下载对应的.so文件,并放入容器的插件目录。 接下来是配置文件。用户需要修改my.cnf,添加加载插件的配置。这可以通过在Dockerfile中替换my.cnf,或者在运行时挂载自定义的my.cnf文件。例如,在[mysqld]部分添加plugin-load-add=server_audit.so和相关的参数,比如server_audit_logging=ON。 此外,权限问题需要注意。容器内的MySQL用户需要有权限读取插件文件和写入审计日志的路径。需要确保挂载的日志目录有正确的权限,或者在容器内部创建相应的目录并设置权限。 测试步骤也很重要。启动容器后,进入MySQL并执行SHOW PLUGINS;确认插件已加载。可能需要检查日志文件是否存在,以及审计功能是否正常工作。 另外,用户可能遇到插件加载失败的情况,比如版本不兼容或路径错误。这时候需要查看MySQL的错误日志,排查问题。可能需要尝试不同的插件版本,或者调整配置。 最后,考虑到用户可能希望持久化配置,建议使用Docker volumes来保存数据和配置文件,这样即使容器重启,配置也不会丢失。同时,提供Dockerfile示例和运行命令可以帮助用户快速实现部署。 总结步骤:获取插件文件,创建自定义镜像或挂载插件,配置my.cnf,启动容器,验证插件加载,处理可能的错误。需要确保所有步骤符合Docker和MySQL 5.7的环境要求,并注意版本兼容性。</think>### Docker中为MySQL 5.7安装Audit Plugin的步骤 #### 一、获取审计插件文件 1. **MariaDB审计插件**:MySQL社区版可使用MariaDB的`server_audit.so`插件,需下载对应版本(建议选择与MySQL 5.7兼容的版本,如v1.4.0)。 - 从MariaDB官网下载RPM包后提取文件: ```bash rpm2cpio mariadb-10.6.11-linux-x86_64.rpm | cpio -idmv cp ./usr/lib64/mysql/plugin/server_audit.so ./server_audit.so ``` #### 二、构建自定义Docker镜像 1. **目录结构准备**: ```bash mkdir -p mysql-audit/{conf,plugins,logs} ``` - `conf`: 存放自定义的`my.cnf` - `plugins`: 存放`server_audit.so` - `logs`: 审计日志存储目录 2. **编写Dockerfile**: ```dockerfile FROM mysql:5.7 COPY conf/my.cnf /etc/mysql/conf.d/ COPY plugins/server_audit.so /usr/lib/mysql/plugin/ RUN chmod 644 /usr/lib/mysql/plugin/server_audit.so ``` 3. **配置文件`my.cnf`**: ```ini [mysqld] plugin-load-add = server_audit.so server_audit_logging = ON server_audit_events = CONNECT,QUERY server_audit_file_path = /var/log/mysql/audit.log ``` #### 三、启动容器并验证 1. **构建并运行容器**: ```bash docker build -t mysql5.7-audit . docker run -d \ -v $(pwd)/logs:/var/log/mysql \ --name mysql-audit \ -e MYSQL_ROOT_PASSWORD=123456 \ mysql5.7-audit ``` 2. **进入容器验证插件**: ```bash docker exec -it mysql-audit mysql -uroot -p123456 ``` ```sql SHOW PLUGINS; -- 确认server_audit状态为ACTIVE SELECT * FROM information_schema.server_audit_status; -- 查看审计配置 ``` #### 四、常见问题解决 1. **插件加载失败**: - 检查错误日志:`docker logs mysql-audit` - 确保`server_audit.so`与MySQL 5.7架构匹配(x86_64/ARM) - 确认`my.cnf`路径正确(MySQL 5.7默认加载`/etc/mysql/conf.d/*.cnf`) 2. **日志权限问题**: ```bash docker exec mysql-audit chown -R mysql:mysql /var/log/mysql ``` #### 五、持久化配置(可选) 通过Docker Compose管理服务: ```yaml version: '3' services: mysql: image: mysql5.7-audit volumes: - ./logs:/var/log/mysql environment: MYSQL_ROOT_PASSWORD: 123456 ``` --- ###
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值