目录

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博客

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐