MySQL 使用開源審計(jì)插件示例詳解
前言
MySQL 只有企業(yè)版有審計(jì)插件,開源社區(qū)版沒有審計(jì)插件。企業(yè)要通過等保需要開通審計(jì),這里記錄使用 MariaDB 開源審計(jì)插件,讓 MySQL 社區(qū)版擁有審計(jì)功能。
1. 審計(jì)插件下載
審計(jì)插件是包含在 MariaDB 中的,所以需要先下載 MariaDB 然后將 server_audit.so 審計(jì)插件 copy 出來(lái)。
MariaDB 的 10.1 版本對(duì)應(yīng)與 Oracle 的 MySQL 5.7 版本,這里是 MariaDB 官方下載地址 可以從鏈接里下載 MariaDB。
tar -zxvf mariadb-10.1.48-linux-systemd-x86_64.tar.gz
進(jìn)入 /lib/plugin/ 目錄可以找到 server_audit.so 審計(jì)插件:
ll ./mariadb-10.1.48-linux-systemd-x86_64/lib/plugin/server_audit.so -rw-r--r-- 1 esadmin mysql 245036 Oct 30 2020 ./mariadb-10.1.48-linux-systemd-x86_64/lib/plugin/server_audit.so
接下來(lái),需要將插件 copy 到 MySQL 插件目錄里面,可以執(zhí)行下方 SQL 查詢 MySQL base 目錄:
select @@basedir; +-------------------+ | @@basedir | +-------------------+ | /usr/local/mysql/ | +-------------------+
MySQL 插件目錄在 basedir/lib/plugin/ 下面,將插件 copy 到此目錄:
cp /pg_data/mariadb-10.1.48-linux-systemd-x86_64/lib/plugin/server_audit.so /usr/local/mysql/lib/plugin/
修改文件屬組,然后連接 MySQL 安裝插件:
install plugin server_audit SONAME 'server_audit.so';
通過下方命令確認(rèn)插件是否啟動(dòng)成功 Status = ACTIVE:
show plugins; ...... +----------------------------+----------+--------------------+-----------------+---------+ | Name | Status | Type | Library | License | +----------------------------+----------+--------------------+-----------------+---------+ | SERVER_AUDIT | ACTIVE | AUDIT | server_audit.so | GPL | +----------------------------+----------+--------------------+-----------------+---------+
2. 審計(jì)插件參數(shù)
通過下方參數(shù)可以查看審計(jì)插件涉及到的參數(shù):
root@mysql 14:33: [(none)]>show variables like '%audit%'; +-------------------------------+-----------------------+ | Variable_name | Value | +-------------------------------+-----------------------+ | server_audit_events | | | server_audit_excl_users | | | server_audit_file_path | server_audit.log | | server_audit_file_rotate_now | OFF | | server_audit_file_rotate_size | 1000000 | | server_audit_file_rotations | 9 | | server_audit_incl_users | | | server_audit_loc_info | | | server_audit_logging | OFF | | server_audit_mode | 1 | | server_audit_output_type | file | | 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 | +-------------------------------+-----------------------+
2.1 server_audit_events
該參數(shù)設(shè)置需要保存哪些類型的 SQL 語(yǔ)句,可以保存的類型有:CONNECT, QUERY, TABLE, QUERY_DDL, QUERY_DML, QUERY_DCL, QUERY_DML_NO_SELECT
如果沒有設(shè)置該參數(shù),將記錄所有類型的 SQL 語(yǔ)句。
2.2 server_audit_excl_users
用戶列表,設(shè)置后表示該列表的用戶行為將不會(huì)被記錄,相當(dāng)于一個(gè)黑名單。
2.3 server_audit_output_type
指定日志輸出類型,可為 SYSLOG 或 FILE,默認(rèn)和推薦使用的模式都是 FILE 模式。
2.4 server_audit_file_path
當(dāng) server_audit_output_type=file 時(shí),通過該參數(shù)可以設(shè)置日志存放目錄,默認(rèn)為 server_audit.log 表示在數(shù)據(jù)目錄。
2.5 server_audit_file_rotate_now
強(qiáng)制日志文件輪轉(zhuǎn)。
2.6 server_audit_file_rotate_size
限制日志文件的大小,默認(rèn)為 1000000
2.7 server_audit_file_rotations
日志輪轉(zhuǎn)的次數(shù),默認(rèn)為 0 表示不輪轉(zhuǎn)。
2.8 server_audit_incl_users
用戶列表,設(shè)置后表示哪些用戶的操作需要被記錄,優(yōu)先級(jí)高于 server_audit_excl_users 參數(shù)列表。
2.9 server_audit_loc_info
記錄內(nèi)部信息,用戶可忽略。
2.10 server_audit_logging
默認(rèn)為 OFF,設(shè)置為 ON 表示打開審計(jì)日志記錄。
2.11 server_audit_mode
內(nèi)核人員開發(fā)調(diào)試使用的參數(shù),用戶可忽略。
2.12 server_audit_query_log_limit
限制審計(jì)日志記錄中字符串長(zhǎng)度,默認(rèn)為 1024。
2.13 server_audit_syslog_facility
SYSLOG-mode 變量,設(shè)置一些 “facility”。
2.14 server_audit_syslog_ident
設(shè)置 ident 作為審計(jì)日志的一部分。
2.15 server_audit_syslog_info
將指定字符串添加到審計(jì)日志中。
2.16 server_audit_syslog_priority
SYSLOG-mode 變量,為 syslog 定義日志記錄的優(yōu)先級(jí)。
3. 審計(jì)插件使用
開啟審計(jì)日志,每個(gè)日志大小為 5G 可以有 10 文件進(jìn)行輪換。
server_audit_logging = ON server_audit_file_path = /pg_data/mysql_audit_log server_audit_file_rotate_size = 5G server_audit_file_rotations = 10 server_audit_file_rotate_now = ON
server_audit_file_path 參數(shù)的目錄需要提前創(chuàng)建好,并配置 mysql 屬組,然后重啟 MySQL 服務(wù)。
審計(jì)日志的記錄格式是:
[timestamp],[serverhost],[username],[host],[connectionid],[queryid],[operation],[database],[object],[retcode]
20230830 15:55:51,db4,root,localhost,2,0,CONNECT,,,0 20230830 15:55:51,db4,root,localhost,2,1,QUERY,,'select @@version_comment limit 1',0 20230830 15:55:51,db4,root,localhost,2,2,QUERY,,'select USER()',0 20230830 15:55:56,db4,root,localhost,2,3,QUERY,,'show databases',0 20230830 15:56:16,db4,root,localhost,2,4,QUERY,,'SELECT DATABASE()',0 20230830 15:56:16,db4,root,localhost,2,6,QUERY,op_service_db,'show databases',0 20230830 15:56:16,db4,root,localhost,2,7,QUERY,op_service_db,'show tables',0 20230830 15:56:19,db4,root,localhost,2,19,QUERY,op_service_db,'show tables',0 20230830 15:59:25,db4,root,localhost,2,20,QUERY,op_service_db,'set global server_audit_syslog_ident = \'test01\'',0
4. 卸載審計(jì)插件
執(zhí)行下方 SQL 卸載插件即可:
UNINSTALL PLUGIN 'server_audit';
5. 總結(jié)
以上就是審計(jì)日志的配置和使用說明,值得注意的是,開通審計(jì)會(huì)增加數(shù)據(jù)庫(kù)性能開銷,需要關(guān)注磁盤空間使用情況。
到此這篇關(guān)于MySQL 使用開源審計(jì)插件的文章就介紹到這了,更多相關(guān)MySQL審計(jì)插件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL操作數(shù)據(jù)庫(kù)實(shí)戰(zhàn)指南
這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫(kù)操作庫(kù)的相關(guān)資料,MySQL數(shù)據(jù)庫(kù)是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),所采用的SQL語(yǔ)言是用于訪問數(shù)據(jù)庫(kù)最常用的標(biāo)準(zhǔn)會(huì)語(yǔ)言,需要的朋友可以參考下2023-07-07
MySQL復(fù)制與主從架構(gòu)(Master-Slave)詳細(xì)介紹
數(shù)據(jù)庫(kù)的主從架構(gòu)是通過將數(shù)據(jù)從一個(gè)主庫(kù)復(fù)制到一個(gè)或多個(gè)從庫(kù)來(lái)實(shí)現(xiàn),該架構(gòu)的核心是數(shù)據(jù)同步,主要用于數(shù)據(jù)的容災(zāi)備份,讀寫分離,數(shù)據(jù)分析場(chǎng)景中,這篇文章主要介紹了MySQL復(fù)制與主從架構(gòu)(Master-Slave)的相關(guān)資料,需要的朋友可以參考下2026-04-04
mysql load data infile 的用法(40w數(shù)據(jù) 用了
測(cè)試數(shù)據(jù)的時(shí)候,生成txt文件應(yīng)該快點(diǎn),再用這種方式導(dǎo)入到mysql 速度上快點(diǎn),40w數(shù)據(jù) 用了3-5秒導(dǎo)進(jìn)mysql2013-01-01
MySQL OOM 系統(tǒng)二 OOM Killer
前面一節(jié)重點(diǎn)分享了Linux的內(nèi)存分配策略,基于上述的分配策略,為了規(guī)避超售的風(fēng)險(xiǎn),Linux采了一種OOM Killer的機(jī)制,即系統(tǒng)可用內(nèi)存(包括Swap)即將使用完之前,選擇性的Kill掉一些進(jìn)程以求釋放一些內(nèi)存2016-07-07
深入mysql YEAR() MONTH() DAYOFMONTH()日期函數(shù)的詳解
本篇文章是對(duì)mysql中的YEAR() MONTH() DAYOFMONTH()日期函數(shù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06

