Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

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

8.4.5.2 安装或卸载 MySQL 企业审计

本节描述如何安装或卸载 MySQL 企业审计,该功能是使用审计日志插件和相关元素实现的,如 第 8.4.5.1 节,“MySQL 企业审计元素”所述。关于安装插件的一般信息,请参阅 第 7.6.1 节,“安装和卸载插件”

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

Important

在按照本节中的说明之前,请阅读整个节。某些步骤取决于您的环境。

Note

如果安装了,audit_log 插件即使禁用也会产生一些最小的开销。为了避免这种开销,请不要安装 MySQL 企业审计,除非您计划使用它。

要使插件库文件可供服务器使用,必须将其位于 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 安装,USERHOST 列在 audit_log_user 表中用于 MySQL 企业审计的定义现在更好地对应于 UserHost 列在 mysql.user 系统表中的定义。对于已经安装了 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

要在源/副本复制、组复制或 InnoDB 集群中使用 MySQL 企业审计,您必须在源节点上运行安装脚本之前准备副本节点。这是因为安装脚本中的 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

默认情况下,基于规则的审计日志过滤器不会记录任何用户的可审核事件。这不同于遗留审计日志行为,该行为记录所有用户的所有可审核事件(见 第 8.4.5.10 节,“遗留模式审计日志过滤”)。如果您想使用基于规则的过滤器来记录所有事件,请创建一个简单的过滤器以启用日志记录,并将其分配给默认帐户:

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

分配给 % 的过滤器将用于来自任何帐户的连接,该帐户没有明确分配的过滤器(最初是所有帐户的真实情况)。

按照上述方式安装的 MySQL 企业审计将保持安装状态,直到卸载。要删除它,请运行位于 MySQL 安装目录中的 share 目录中的卸载脚本。例如,以下指定了默认系统数据库 mysql。请为您的系统进行适当的替换。

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