mysql 5.7开启审计

1  mysql社区版没有审计插件,下载mariadb-5.5.56-linux-x86_64.tar.gz解压获取server_audit.so插件,

将server_audit.so上传到 /mysql/plugin/下

2 安装插件

mysql> INSTALL PLUGIN server_audit SONAME 'server_audit.so';

3 开启参数

mysql> show variables like '%audit%';

 

cnf文件加入

server_audit_events='CONNECT,QUERY,TABLE,QUERY_DDL,QUERY_DML,QUERY_DCL'
#备注:指定哪些操作被记录到日志文件中
server_audit_logging=on
server_audit_file_path =/data/mysql/auditlogs/
#备注:审计日志存放路径,该路径下会生成一个server_audit.log文件,就会记录相关操作记录了
server_audit_file_rotate_size=200000000
server_audit_file_rotations=200
server_audit_file_rotate_now=ON

 

4 防止server_audit 插件被卸载,需要在配置文件中添加:
[mysqld]
server_audit=FORCE_PLUS_PERMANENT

重启MySQL生效

mysql> UNINSTALL PLUGIN server_audit;
ERROR 1702 (HY000): Plugin 'server_audit' is force_plus_permanent and can not be unloaded

 

 

参数说明:
详细请参考:https://mariadb.com/kb/en/mariadb/server_audit-system-variables/
server_audit_output_type:指定日志输出类型,可为SYSLOG或FILE
server_audit_logging:启动或关闭审计
server_audit_events:指定记录事件的类型,可以用逗号分隔的多个值(connect,query,table),如果开启了查询缓存(query cache),查询直接从查询缓存返回数据,将没有table记录
server_audit_file_path:如server_audit_output_type为FILE,使用该变量设置存储日志的文件,可以指定目录,默认存放在数据目录的server_audit.log文件中
server_audit_file_rotate_size:限制日志文件的大小
server_audit_file_rotations:指定日志文件的数量,如果为0日志将从不轮转
server_audit_file_rotate_now:强制日志文件轮转
server_audit_incl_users:指定哪些用户的活动将记录,connect将不受此变量影响,该变量比server_audit_excl_users优先级高
server_audit_syslog_facility:默认为LOG_USER,指定facility
server_audit_syslog_ident:设置ident,作为每个syslog记录的一部分
server_audit_syslog_info:指定的info字符串将添加到syslog记录
server_audit_syslog_priority:定义记录日志的syslogd priority
server_audit_excl_users:该列表的用户行为将不记录,connect将不受该设置影响
server_audit_mode:标识版本,用于开发测试

MySQL 5.7 中,可以通过以下步骤来启用审计: 1. 打开 MySQL 配置文件 my.cnf,在 [mysqld] 下添加以下配置项: ``` [mysqld] # 启用审计 audit_log=ON # 审计日志文件路径和文件名 audit_log_file=/var/log/mysql/mysql-audit.log # 审计日志格式 audit_log_format=JSON ``` 2. 重启 MySQL 服务。 3. 使用以下语句创建审计日志表: ``` CREATE TABLE mysql.audit_log ( event_time TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), server_host VARCHAR(255) NOT NULL, server_user VARCHAR(255), log_level VARCHAR(255), thread_id BIGINT(20) UNSIGNED NOT NULL, server_id INT UNSIGNED NOT NULL, command_class VARCHAR(64) NOT NULL, command_text TEXT NOT NULL, argument TEXT, affected_rows BIGINT, sql_mode VARCHAR(8192), user_variables TEXT, server_variables TEXT, server_version VARCHAR(255), client_host VARCHAR(255), client_user VARCHAR(255), client_port INT UNSIGNED, connection_id BIGINT UNSIGNED, proxy_user VARCHAR(255), proxy_host VARCHAR(255), proxy_port INT UNSIGNED, ssl_cipher VARCHAR(255), x509_issuer VARCHAR(255), x509_subject VARCHAR(255), authentication_type VARCHAR(80), query_id BIGINT UNSIGNED ) ENGINE=ROCKSDB; ``` 4. 现在,MySQL 会将所有的审计事件写入指定的审计日志文件中。可以使用以下语句查询审计日志: ``` SELECT * FROM mysql.audit_log; ``` 需要注意的是,启用审计会增加系统开销,因此在生产环境中需要谨慎使用。同时,审计日志中可能包含敏感信息,需要妥善保管和处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值