6.4.5.2 安装或卸载 MySQL 企业审核

本节介绍如何安装或卸载 MySQL Enterprise Audit,它是使用第 6.4.5.1 节“审核日志组件”中描述的审核日志插件和相关组件实现的。有关安装插件的一般信息,请参见第 5.5.1 节“安装和卸载插件”

Important

在遵循其说明之前,请先阅读整个部分。该过程的某些部分取决于您的环境。

Note

如果安装了audit_log插件,即使已禁用,它们也需要一些最小的开销。为了避免这种开销,除非计划使用它,否则不要安装 MySQL Enterprise Audit。

要由服务器使用,插件库文件必须位于 MySQL 插件目录(由plugin_dir系统变量命名的目录)中。如有必要,通过在服务器启动时设置plugin_dir的值来配置插件目录位置。

Note

此处的说明适用于 MySQL 5.7.13 或更高版本。对于 5.7.13 之前的 MySQL 版本,请参见MySQL 5.6 参考手册中的安装 MySQL 企业审核

另外,在 MySQL 5.7.13 之前,MySQL Enterprise Audit 仅由audit_log插件组成,而在第 6.4.5.1 节“审核日志组件”中未描述任何其他组件。从 MySQL 5.7.13 开始,如果已经从 5.7.13 之前的 MySQL 版本安装了audit_log插件,请使用以下语句将其卸载,并在安装当前版本之前重新启动服务器:

UNINSTALL PLUGIN audit_log;

要安装 MySQL Enterprise Audit,请查看 MySQL 安装的share目录,然后选择适合您平台的脚本。可用的脚本在用于引用插件库文件的后缀中有所不同:

如下运行脚本。此处的示例使用 Linux 安装脚本。为您的系统进行适当的替换。

shell> mysql -u root -p < audit_log_filter_linux_install.sql
Enter password: (enter root password here)

Note

某些 MySQL 版本对 MySQL 企业审核 table 的结构进行了更改。为了确保您的 table 是最新的,可以从早期版本的 MySQL 5.7 进行升级,请运行mysql_upgrade --force(它还将执行任何其他所需的更新)。如果您只希望对 MySQL Enterprise Audittable 运行更新语句,请参见以下讨论。

从 MySQL 5.7.23 开始,对于新安装的 MySQL,MySQL Enterprise Audit 使用的audit_log_usertable 中的USERHOST列的定义更好地与mysql.user系统 table 中UserHost列的定义相对应。对于已经安装了 MySQL Enterprise Audit 的安装到 5.7.23 或更高版本的升级,建议您按以下方式更改 table 定义:

ALTER TABLE mysql.audit_log_user
DROP FOREIGN KEY audit_log_user_ibfk_1;
ALTER TABLE mysql.audit_log_filter
ENGINE=InnoDB;
ALTER TABLE mysql.audit_log_filter
CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;
ALTER TABLE mysql.audit_log_user
ENGINE=InnoDB;
ALTER TABLE mysql.audit_log_user
CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;
ALTER TABLE mysql.audit_log_user
MODIFY COLUMN USER VARCHAR(32);
ALTER TABLE mysql.audit_log_user
ADD FOREIGN KEY (FILTERNAME) REFERENCES mysql.audit_log_filter(NAME);

从 MySQL 5.7.21 开始,对于新安装的 MySQL 企业审核,审核日志 table 使用InnoDB而不是MyISAM。对于已经安装了 MySQL Enterprise Audit 的安装到 5.7.21 或更高版本的升级,建议您更改审核日志 table 以使用InnoDB

ALTER TABLE mysql.audit_log_user ENGINE=InnoDB;
ALTER TABLE mysql.audit_log_filter ENGINE=InnoDB;

Note

要在主/从复制,组复制或 InnoDB 群集的上下文中使用 MySQL 企业审核,必须使用 MySQL 5.7.21 或更高版本,并确保审核日志 table 使用InnoDB,如上所述。然后,您必须在主节点或主节点上运行安装脚本之前准备从属或辅助节点。这是必需的,因为不会复制脚本中的INSTALL PLUGIN语句。

  • 在每个从节点或辅助节点上,从安装脚本中提取INSTALL PLUGIN语句并手动执行。

  • 在主节点或主节点上,如前所述运行安装脚本。

要验证插件安装,请检查INFORMATION_SCHEMA.PLUGINStable 或使用SHOW PLUGINS语句(请参见第 5.5.2 节“获取服务器插件信息”)。例如:

mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS
       FROM INFORMATION_SCHEMA.PLUGINS
       WHERE PLUGIN_NAME LIKE 'audit%';
+-------------+---------------+
| PLUGIN_NAME | PLUGIN_STATUS |
+-------------+---------------+
| audit_log   | ACTIVE        |
+-------------+---------------+

如果插件未能初始化,请检查服务器错误日志以获取诊断消息。

安装 MySQL 企业审核后,您可以使用--audit-log选项进行后续服务器启动,以控制audit_log插件的激活。例如,要防止在运行时删除插件,请使用以下选项:

[mysqld]
audit-log=FORCE_PLUS_PERMANENT

如果希望阻止服务器在没有审核插件的情况下运行,请使用值为--audit-logFORCE_PLUS_PERMANENT--audit-log强制如果插件未成功初始化则服务器启动失败。

Important

默认情况下,基于规则的审核日志筛选不会记录任何用户的可审核事件。这与旧版审核日志行为(MySQL 5.7.13 之前的版本)不同,后者记录了所有用户的所有可审核事件(请参见第 6.4.5.9 节“旧模式审核日志过滤”)。如果您希望通过基于规则的过滤来产生所有日志行为,请创建一个简单的过滤器以启用日志记录并将其分配给默认帐户:

SELECT audit_log_filter_set_filter('log_all', '{ "filter": { "log": true } }');
SELECT audit_log_filter_set_user('%', 'log_all');

分配给%的过滤器用于来自没有明确分配过滤器的帐户的连接(最初对所有帐户都是如此)。

如前所述,一旦安装,MySQL Enterprise Audit 会一直保持安装状态直到被卸载。要删除它,请执行以下语句:

DROP TABLE IF EXISTS mysql.audit_log_user;
DROP TABLE IF EXISTS mysql.audit_log_filter;
UNINSTALL PLUGIN audit_log;
DROP FUNCTION audit_log_filter_set_filter;
DROP FUNCTION audit_log_filter_remove_filter;
DROP FUNCTION audit_log_filter_set_user;
DROP FUNCTION audit_log_filter_remove_user;
DROP FUNCTION audit_log_filter_flush;
DROP FUNCTION audit_log_encryption_password_get;
DROP FUNCTION audit_log_encryption_password_set;
DROP FUNCTION audit_log_read;
DROP FUNCTION audit_log_read_bookmark;
首页