文档首页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  ...  /  安装或卸载 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 Cluster 的上下文中使用 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

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

重要

默认情况下,基于规则的审计日志过滤不会记录任何用户的任何可审计事件。这与传统审计日志的行为不同,传统审计日志会记录所有用户的可审计事件(参见 第 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)