文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  安装或卸载 MySQL Enterprise Audit

8.4.5.2 安装或卸载 MySQL Enterprise Audit

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

升级 MySQL 安装时,插件不会自动升级,并且某些插件可加载函数必须手动加载(请参阅安装可加载函数)。或者,您可以在升级 MySQL 后重新安装插件以加载新函数。

重要

在按照说明操作之前,请阅读本节的全部内容。根据您的环境,过程的某些部分会有所不同。

注意

如果安装了audit_log插件,即使在禁用时,也会产生一些最小的开销。为了避免这种开销,除非您打算使用 MySQL Enterprise Audit,否则请不要安装它。

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

要安装 MySQL Enterprise Audit,请在 MySQL 安装的share目录中查找并选择适合您平台的脚本。可用的脚本在用于引用脚本的文件名方面有所不同

  • audit_log_filter_win_install.sql

  • audit_log_filter_linux_install.sql

运行脚本,如下所示。这里的示例使用 Linux 安装脚本和默认的mysql系统数据库。请根据您的系统进行相应的替换。

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

您可以在运行安装脚本时指定用于存储 JSON 过滤器表的自定义数据库。请先创建数据库;其名称不应超过 64 个字符。例如:

mysql> CREATE DATABASE IF NOT EXISTS database-name;

接下来,使用备用数据库名称运行脚本。

$> mysql -u root -p -D database-name < audit_log_filter_linux_install.sql
Enter password: (enter root password here)
注意

某些 MySQL 版本对 MySQL Enterprise Audit 表的结构进行了一些更改。为了确保您的表在从早期版本的 MySQL 升级时是最新的,请执行 MySQL 升级过程,确保使用强制更新的选项(请参阅第 3 章“升级 MySQL”)。如果您只想对 MySQL Enterprise Audit 表运行更新语句,请参阅以下讨论。

对于新的 MySQL 安装,MySQL Enterprise Audit 使用的audit_log_user表中的USERHOST列的定义与mysql.user系统表中的UserHost列的定义更加对应。对于已经安装了 MySQL Enterprise Audit 的安装进行升级,建议您按如下方式更改表定义

ALTER TABLE mysql.audit_log_user
  DROP FOREIGN KEY audit_log_user_ibfk_1;
ALTER TABLE mysql.audit_log_filter
  CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_ci;
ALTER TABLE mysql.audit_log_user
  CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_ci;
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);
注意

要在源/副本复制、组复制或 InnoDB 集群的上下文中使用 MySQL Enterprise Audit,您必须先准备副本节点,然后再在源节点上运行安装脚本。这是必要的,因为脚本中的INSTALL PLUGIN语句不会被复制。

  1. 在每个副本节点上,从安装脚本中提取INSTALL PLUGIN语句并手动执行它。

  2. 在源节点上,按照前面描述的方式运行安装脚本。

要验证插件安装,请检查信息架构 PLUGINS 表或使用 SHOW PLUGINS 语句(请参阅 第 7.6.2 节 “获取服务器插件信息”)。例如:

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

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

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

[mysqld]
audit-log=FORCE_PLUS_PERMANENT

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

重要

默认情况下,基于规则的审计日志过滤不会记录任何用户的任何可审计事件。这与旧版审计日志行为不同,后者会记录所有用户的可审计事件(请参阅 第 8.4.5.10 节 “旧版模式审计日志过滤”)。如果您希望使用基于规则的过滤生成记录所有内容的行为,请创建一个简单的过滤器以启用日志记录并将其分配给默认帐户:

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

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

按照上述方式安装后,MySQL Enterprise Audit 将保持安装状态,直到卸载。要删除它,请运行位于 MySQL 安装的 share 目录中的卸载脚本。这里的示例指定了默认系统数据库 mysql。请根据您的系统进行相应的替换。

$> mysql -u root -p -D mysql < audit_log_filter_uninstall.sql
Enter password: (enter root password here)