输出示例
上述示例代码的示例输出:
mysql> CALL flush_audit_log(); Query OK, 0 rows affected (0.01 sec)
要求
MySQL Enterprise Audit Log Plugin 的安装必须满足以下要求:
- MySQL Enterprise Audit Log Plugin 包含在 MySQL Enterprise Edition:5.5.28 及更高版本和 5.6 及更高版本:GA 版本中
- 必须安装并启用 MySQL Enterprise Audit Log Plugin。
- MySQL Enterprise Audit Log Plugin 必须配置为 audit_log_rotate_on_size = 0
这是关于允许没有 SUPER 的用户轮换审计日志的简短说明。
由于 audit_log_flush 变量仅存在于 GLOBAL 范围内,因此需要 SUPER 权限才能设置它。
如果我们不想授予该用户 SUPER 权限(应谨慎授予此权限),则可以选择创建一个简单的过程来刷新审计日志并使用 SQL SECURITY DEFINER 执行该过程。
通过这种方式,我们可以使用具有 SUPER 的用户创建过程,然后将过程的 EXECUTE 授予应该被允许执行它的用户。
配置
需要以下权限:
- 存储过程的创建者必须在创建例程的数据库上具有 SUPER 和 CREATE ROUTINE。
- 存储过程的执行者必须对存储过程具有 EXECUTE。
- 重命名审计日志文件,例如:
$ mv audit.log audit.log.1
- 执行程序:
mysql> CALL flush_audit_log();
on It Road.com
示例代码
示例代码:
DROP PROCEDURE IF EXISTS mysql.flush_audit_log; DELIMITER // CREATE PROCEDURE mysql.flush_audit_log() SQL SECURITY DEFINER BEGIN IF (@@global.audit_log_rotate_on_size = 0) THEN SET GLOBAL audit_log_flush = 1; ELSE SIGNAL SQLSTATE '01000' SET MYSQL_ERRNO = 1642, MESSAGE_TEXT = 'Setting audit_log_flush = 1 only has an effect when audit_log_rotate_on_size = 0'; END IF; END// DELIMITER ;
日期:2020-09-17 00:11:15 来源:oir作者:oir