• 从零开始在window10系统下mysql5.7安装审计插件(亲测绝对可用)


    🤵‍♂️ 个人主页: 奇怪的守护神

    👨‍💻 作者简介:十年全栈开发经验,团队负责人。喜欢钻研技术,争取成为编程达人 🎖️!

    🗺️学海无涯苦作舟,🛤️编程之路无悔路!

    📝 如果文章对你有帮助的话,欢迎评论💬点赞👍收藏📂加关注,不胜感激!

    前言

    mysql有没oracle这样的审计功能?突然想在mysql做审计怎么办?下面带大家从零开始给mysql安装审计插件,亲测绝对可用哦!
    本教程虽然是在windows里操作,但在linux系统里也是同理,对应的插件和配置修改,都是类似的。

    a、企业版 MySQL Enterprise Edition(收费)自带AUDIT审计功能。

    b、社区版 MySQL Community Server(免费)需要自己下载插件。

    所以,免费的社区版的使用者们,跟着下面教程获取到审计功能吧。

    1、下载MariaDB拿到对应的审计插件

    • tip:这一步本来就是为了获得审计插件的,不想下载MariaDB那么麻烦,直接本人保存好的审计插件-server_audit.dll文件(下载地址),
      可跳过第1步、第2步,去到第3步,直接拷贝到数据库所在目录的\lib\plugin下 。

      下载地址:https://wwp.lanzouy.com/iDeVK0a66nmd

    版本情况

    window10

    mysql5.7.36

    mysql与MariaDB 的版本对应很重要。mysql5.7.36版本,选择MariaDB 的版本是5.5.57下载路径

    https://archive.mariadb.org//mariadb-5.5.68/winx64-packages/mariadb-5.5.68-winx64.msi

    MariaDB

    2、安装MariaDB审计插件

    MariaDB安装

    MariaDB安装

    改下端口,其他都是下一步。

    3、配置审计插件到mysql

    1、登入mysql执行如下命令,可以查看mysql数据对应的插件文件存放位置。

    SHOW GLOBAL VARIABLES LIKE 'plugin_dir';
    
    • 1

    image-20220824192857084

    2、从MariaDB的lib\plugin目录拷贝server_audit.dll:

    image-20220824191659348

    复制到mysql对应的 lib\plugin目录下:

    image-20220824191734173

    3、mysql里执行如下命令安装审计插件:

    INSTALL PLUGIN server_audit SONAME 'server_audit.dll';
    
    • 1

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

     show variables like '%audit%';
    
    • 1

    5、执行如下命令开启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;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    执行完上述命令,

    show variables like '%audit%';
    
    • 1

    可查看审计配置说明

    6、永久生效配置,修改配置文件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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    然后重启mysql

    net stop mysql
    net start mysql
    
    • 1
    • 2

    4、测试审计插件

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

    image-20220824192338125

    可以看到刚才操作的日志都有了:

    image-20220824192634868

    5、卸载审计插件

     #如果设置了防卸载,需要先去掉该配置 server_audit = FORCE_PLUS_PERMANENT
     UNINSTALL PLUGIN server_audit;
     show variables like '%audit%';
    
    • 1
    • 2
    • 3

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    重点说明参数: 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语句)

    7、注意

    1. 如果开启了查询缓存(query cache),查询直接从查询缓存返回数据,将没有table记录
    2. 由于除了DDL和DML之外还有其他类型的查询,因此将查询DDL和查询DML选项一起使用并不等同于使用查询。从Audit插件的1.3.0版开始,有用于记录查询的DCL类型(例如GRANT和REVOKE语句)的QUERY_DCL选项。在同一版本中,添加了server_audit_query_log_limit变量,以便能够设置日志记录的长度。以前,由于查询字符串较长,日志条目将被截断。
    3. 卸载审计插件
      如my.cnf 有相关配置,先清空重启再卸载。

    🚀博主个人博客网站:奇想派

    🎨文章首发平台:微信公众号【编程达人

    🔥原创不易!各位小伙伴觉得文章不错的话,可以关注我,进行评论💬点赞👍收藏📂三连走起!谢谢大家!

  • 相关阅读:
    二叉搜索树之:【中序遍历一棵二叉搜索树】【给一棵有固定形态的二叉搜索树填值】【用BST中序遍历的性质填值】【之前讲过层序遍历】
    正点原子嵌入式linux驱动开发——设备树下LED驱动
    5款.NET开源、免费、功能强大的图表库
    网易面试总结——面试案例1~面试案例4
    【博客480】prometheus-----数据查找过程
    php-java-net-python-北京名胜古迹展览网站计算机毕业设计程序
    机器学习—非零中心化、非零中心化会带来的问题
    RK3399平台开发系列讲解(入门篇)VIM的基础命令
    《大气压流注放电的二维PIC/MCC模拟研究》听讲笔记
    暗猝灭剂BHQ-2 氨基,BHQ-2 amine,CAS:1241962-11-7
  • 原文地址:https://blog.csdn.net/qq_24298751/article/details/126859866