Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  Installing or Uninstalling MySQL Enterprise Audit

8.4.5.2 MySQL 企业版审计的安装或卸载

本节描述了如何安装或卸载 MySQL Enterprise Audit,它使用 audit 日志插件和相关元素,详见第8.4.5.1节,“MySQL 企业版审计的元素”。关于安装插件的总体信息,见第7.6.1节,“安装和卸载插件”

升级 MySQL 时,插件升级不是自动的,一些可加载函数必须手动加载(见安装可加载函数)。也可以在升级 MySQL 后重新安装插件来加载新函数。

Important

在执行本节指令前,完整阅读本节。该过程的部分步骤取决于您的环境。

Note

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

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

安装 MySQL 企业审计,请在您的 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)
Note

一些 MySQL 版本引入了 MySQL 企业审计表结构的变化。在升级从早期版本的 MySQL 时,确保您的表是最新的,执行 MySQL 升级过程,确保使用强制更新选项(见第 3 章, 升级 MySQL)。如果您想只运行更新语句来更新 MySQL 企业审计表,查看以下讨论。

对于新安装的 MySQL,audit_log_user 表中的 USERHOST 列由 MySQL 企业审计使用,定义与 mysql.user 系统表中的 UserHost 列的定义相符。对于已经安装了 MySQL 企业审计的升级安装,建议按照以下方式修改表定义:

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);
Note

在使用 MySQL 企业审核工具时,源/副本复制、Group 复制或 InnoDB 集群中,您必须在运行安装脚本前准备副本节点。这是因为脚本中的 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 企业审核工具后,您可以使用 --audit-log 选项来控制 audit_log 插件激活。例如,防止插件在运行时被删除,可以使用以下选项:

[mysqld]
audit-log=FORCE_PLUS_PERMANENT

如果想要防止服务器在没有审核插件的情况下启动,可以使用--audit-log选项,设置为FORCEFORCE_PLUS_PERMANENT,强制服务器启动失败,如果插件初始化不成功。

Important

默认情况下,基于规则的审核日志过滤不会记录任何用户的可审核事件。这与legacy审核日志行为不同,后者会记录所有可审核事件(见第8.4.5.10节,“Legacy Mode Audit Log Filtering”)。如果你想使用基于规则的过滤器来记录所有事件,创建一个简单的过滤器,并将其分配给默认账户:

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)