审计日志记录了用户对数据库执行的所有操作。通过审计日志,用户可以对数据库进行故障分析、行为分析和安全审计等操作,能有效帮助用户获取数据库的执行情况。
MySQL 通过审计插件输出审计日志,因此在审计前需完成审计插件的安装。审计插件安装后仅对当前实例生效,如果用户希望在多个实例中进行审计,需在每个实例中分别安装审计插件。
下述以实例 myinst(实例端口号为 3306)、实例组件安装目录 /opt/sequoiasql/mysql
为例,介绍具体安装步骤。
切换至数据库管理用户(安装时创建,默认为 sdbadmin),并进入 MySQL 实例组件的安装目录
# su - sdbadmin $ cd /opt/sequoiasql/mysql
创建审计日志的存放目录
以创建目录 auditlog/3306
为例,执行如下语句:
$ mkdir -p auditlog/3306
编辑实例配置文件,并根据实际情况调整配置参数的取值
$ vim /opt/sequoiasql/mysql/database/3306/auto.cnf
在文件末尾添加以下内容:
# 加载审计插件 plugin-load=server_audit=server_audit.so # 开启审计功能 server_audit_logging=ON # 配置审计日志所记录的操作类型为 conncet,query server_audit_events=connect,query # 配置审计日志路径及文件名 server_audit_file_path=/opt/sequoiasql/mysql/auditlog/3306/server_audit.log # 限制审计日志文件的大小为 10MB,超过该大小时将进行轮转 server_audit_file_rotate_size=10485760 # 限制审计日志的保留个数为 20 个,超过后会丢弃最早的日志文件 server_audit_file_rotations=20 # 限制每行查询日志的大小为 100KB,若表比较复杂,对应的操作语句比较长,建议增大该值 server_audit_query_log_limit=102400
Note:
示例中仅列举部分配置参数,完整的配置参数列表可参考 MariaDB 官网。
重启实例
$ bin/sdb_mysql_ctl restart myinst
连接实例 myinst
$ bin/mysql --socket=/opt/sequoiasql/mysql/database/3306/mysqld.sock -u root
查看审计配置
mysql> show variables like 'server_audit%';
输出结果如下:
+-------------------------------+------------------------------------------------------------+ | Variable_name | Value | +-------------------------------+------------------------------------------------------------+ | server_audit_events | CONNECT,QUERY | | server_audit_excl_users | | | server_audit_file_path | /opt/sequoiasql/mysql/auditlog/3306/server_audit.log | | server_audit_file_rotate_now | OFF | | server_audit_file_rotate_size | 10485760 | | server_audit_file_rotations | 20 | | server_audit_incl_users | | | server_audit_loc_info | | | server_audit_logging | ON | | server_audit_mode | 0 | | server_audit_output_type | file | | server_audit_query_log_limit | 102400 | | server_audit_syslog_facility | LOG_USER | | server_audit_syslog_ident | mysql-server_auditing | | server_audit_syslog_info | | | server_audit_syslog_priority | LOG_INFO | +-------------------------------+------------------------------------------------------------+
下述以实例 myinst 为例,介绍具体卸载步骤。
编辑实例 myinst 对应的实例配置文件
$ vim /opt/sequoiasql/mysql/database/3306/auto.cnf
在文件末尾将以下内容删除:
# 加载审计插件 plugin-load=server_audit=server_audit.so # 开启审计功能 server_audit_logging=ON # 配置审计日志所记录的操作类型为 conncet,query server_audit_events=connect,query # 配置审计日志路径及文件名 server_audit_file_path=/opt/sequoiasql/mysql/auditlog/3306/server_audit.log # 限制审计日志文件的大小为 10MB,超过该大小时将进行轮转 server_audit_file_rotate_size=10485760 # 限制审计日志的保留个数为 20 个,超过后会丢弃最早的日志文件 server_audit_file_rotations=20 # 限制每行查询日志的大小为 100KB,若表比较复杂,对应的操作语句比较长,建议增大该值 server_audit_query_log_limit=102400
重启实例
$ bin/sdb_mysql_ctl restart myinst
连接实例 myinst
$ bin/mysql --socket=/opt/sequoiasql/mysql/database/3306/mysqld.sock -u root
查看审计插件是否已卸载
mysql> show variables like 'server_audit%';
输出如下信息表示已卸载:
Empty set (0.00 sec)