本节介绍如何安装或卸载MySQL Enterprise Audit,它是通过审计日志插件和相关元素实现的章节6.4.5.1,“MySQL企业审计要素”.有关安装插件的一般信息,请参见章节5.6.1,“安装和卸载插件”.
在遵循本节的说明之前,请阅读整个部分。该过程的部分内容因环境而异。
如果安装,则audit_log
插件即使在禁用时也涉及一些最小的开销。为了避免这种开销,除非你打算使用,否则不要安装MySQL Enterprise Audit。
为了能够被服务器使用,插件库文件必须位于MySQL插件目录中(该目录由plugin_dir
系统变量)。如果需要,可以通过设置的值来配置插件的目录位置plugin_dir
在服务器启动时。
要安装MySQL Enterprise Audit,请查看分享
目录,然后选择适合你的平台的脚本。可用的脚本在引用插件库文件的后缀上有所不同:
audit_log_filter_win_install.sql
: Windows系统使用. dll
作为文件名后缀。audit_log_filter_linux_install.sql
: Linux及类似系统使用此脚本所以
作为文件名后缀。
执行如下脚本。这里的示例使用Linux安装脚本。对您的系统进行适当的替换。
Shell > mysql -u root -p < audit_log_filter_linux_install. sh输入密码:(此处输入root密码)
一些MySQL版本引入了MySQL企业审计表结构的变化。要确保您的表从早期版本的MySQL 8.0升级到最新版本,请执行MySQL升级过程,确保使用强制更新的选项(参见章节2.11,“升级MySQL”).如果您希望只对MySQL Enterprise Audit表运行update语句,请参阅下面的讨论。
从MySQL 8.0.12开始,对于新的MySQL安装,请使用用户
而且宿主
中的列audit_log_user
表的定义更好地对应于用户
而且宿主
中的列mysql.user
系统表。对于升级到已经安装了MySQL Enterprise Audit的安装,建议您按照如下方式修改表定义:
修改mysql表。audit_log_userDROP 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,必须在源节点上运行安装脚本之前准备好副本节点。这是必要的,因为安装插件
脚本中的语句不会被复制。
在每个副本节点上,提取
安装插件
语句,并手动执行它。在源节点上,按照前面的描述运行安装脚本。
要验证插件安装,请检查INFORMATION_SCHEMA。插件
表或使用显示插件
声明(见章节5.6.2“获取服务器插件信息”).例如:
从信息模式中选择PLUGIN_NAME, PLUGIN_STATUSPLUGIN_NAME为'audit%'的插件;+-------------+---------------+ | PLUGIN_NAME | PLUGIN_STATUS | +-------------+---------------+ | audit_log |活跃 | +-------------+---------------+
如果插件初始化失败,请检查服务器错误日志中的诊断消息。
安装MySQL Enterprise Audit后,可以使用——审计日志
选项,供后续服务器启动时控制audit_log
插件激活。例如,为了防止插件在运行时被删除,使用这个选项:
(mysqld)审计日志= FORCE_PLUS_PERMANENT
如果希望阻止服务器在没有审计插件的情况下运行,请使用——审计日志
值为力
或FORCE_PLUS_PERMANENT
如果插件未成功初始化,则强制服务器启动失败。
缺省情况下,基于规则的审计日志过滤不记录任何用户的可审计事件。这与传统审计日志行为不同,后者记录所有用户的所有可审计事件(参见章节6.4.5.9,“遗留模式审计日志过滤”).如果你希望使用基于规则的过滤来生成日志-一切行为,创建一个简单的过滤器来启用日志记录并将其分配给默认帐户:
SELECT audit_log_filter_set_filter('log_all', '{"filter": {"log": true}}');SELECT audit_log_filter_set_user('%', 'log_all');
分配给的筛选器%
用于来自没有显式分配筛选器的任何帐户的连接(最初对所有帐户为真)。
一旦按照刚才描述的方式安装,MySQL Enterprise Audit将一直安装到卸载为止。要删除它,执行以下语句:
DROP TABLE IF EXISTS mysql.audit_log_userDROP TABLE IF EXISTS mysql.audit_log_filter卸载插件audit_logaudit_log_filter_set_filter;DROP FUNCTION audit_log_filter_remove_filterDROP FUNCTION audit_log_filter_set_user;DROP FUNCTION audit_log_filter_remove_userDROP FUNCTION audit_log_filter_flush;DROP FUNCTION audit_log_encryption_password_get;DROP FUNCTION audit_log_encryption_password_set; DROP FUNCTION audit_log_read; DROP FUNCTION audit_log_read_bookmark;