8.4.5.2 MySQL 企业版审计的安装或卸载
本节描述了如何安装或卸载 MySQL Enterprise Audit,它使用 audit 日志插件和相关元素,详见第8.4.5.1节,“MySQL 企业版审计的元素”。关于安装插件的总体信息,见第7.6.1节,“安装和卸载插件”。
升级 MySQL 时,插件升级不是自动的,一些可加载函数必须手动加载(见安装可加载函数)。也可以在升级 MySQL 后重新安装插件来加载新函数。
在执行本节指令前,完整阅读本节。该过程的部分步骤取决于您的环境。
如果已安装,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)
一些 MySQL 版本引入了 MySQL 企业审计表结构的变化。在升级从早期版本的 MySQL 时,确保您的表是最新的,执行 MySQL 升级过程,确保使用强制更新选项(见第 3 章, 升级 MySQL)。如果您想只运行更新语句来更新 MySQL 企业审计表,查看以下讨论。
对于新安装的 MySQL,audit_log_user
表中的 USER
和 HOST
列由 MySQL 企业审计使用,定义与 mysql.user
系统表中的 User
和 Host
列的定义相符。对于已经安装了 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);
在使用 MySQL 企业审核工具时,源/副本复制、Group 复制或 InnoDB 集群中,您必须在运行安装脚本前准备副本节点。这是因为脚本中的 INSTALL PLUGIN
语句不被复制。
-
在每个副本节点上,提取安装脚本中的
INSTALL PLUGIN
语句,并手动执行它。 -
在源节点上,按照之前的描述运行安装脚本。
验证插件安装,可以查看信息架构 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
选项,设置为FORCE
或FORCE_PLUS_PERMANENT
,强制服务器启动失败,如果插件初始化不成功。
默认情况下,基于规则的审核日志过滤不会记录任何用户的可审核事件。这与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)