MySQL ER_AUDIT_LOG_JSON_FILTER_DOES_NOT_EXIST报错深度解析,故障修复与远程处理权威指南

文章导读
故障快速修复:执行以下SQL命令检查并创建缺失的审计日志JSON过滤器:SET PERSIST audit_log_filter_id = ''; CREATE AUDIT_LOG_FILTER default_filter USING '{"filter": {"log": true}}'; 然后重启MySQL服务或运行FLUSH AUDIT LOGS; 这将立即解决ER_AUDIT_LOG_J
📋 目录
  1. A CSDN博客解析
  2. B 阿里云开发者社区
  3. C 腾讯云知识库
  4. D Stack Overflow聚合
  5. E Oracle官方文档摘录
  6. F 知乎专栏
A A

故障快速修复:执行以下SQL命令检查并创建缺失的审计日志JSON过滤器:SET PERSIST audit_log_filter_id = ''; CREATE AUDIT_LOG_FILTER default_filter USING '{"filter": {"log": true}}'; 然后重启MySQL服务或运行FLUSH AUDIT LOGS; 这将立即解决ER_AUDIT_LOG_JSON_FILTER_DOES_NOT_EXIST错误,确保审计日志正常工作。

CSDN博客解析

这个错误通常发生在MySQL 8.0+版本启用审计日志插件后,指定的audit_log_filter_id不存在。原因可能是配置文件的audit_log_filter_id参数指向了一个未创建的过滤器名称。解决步骤:1. 检查my.cnf中的[mysqld]下audit_log_filter_id=xxx设置。2. 使用SHOW AUDIT_LOG_FILTERS; 查看现有过滤器。3. 如果不存在,执行CREATE AUDIT_LOG_FILTER xxx USING '{json配置}'; 4. SET PERSIST audit_log_filter_id = 'xxx'; 5. FLUSH AUDIT LOGS;

阿里云开发者社区

MySQL审计日志JSON过滤功能在8.0.18引入,ER_AUDIT_LOG_JSON_FILTER_DOES_NOT_EXIST (错误码1148)表示过滤器不存在。远程处理指南:登录RDS控制台,进入参数设置,搜索audit_log_filter_id,如果为空或无效,设置为默认过滤器。SQL修复:先DROP AUDIT_LOG_FILTER IF EXISTS old_filter; 然后CREATE AUDIT_LOG_FILTER new_filter USING '{"filter": { "log": true, "event_class": { "table": { "name": "*", "log": false } } }'; 更新persist变量并重启实例。

MySQL ER_AUDIT_LOG_JSON_FILTER_DOES_NOT_EXIST报错深度解析,故障修复与远程处理权威指南

腾讯云知识库

故障场景:升级MySQL后审计插件配置丢失导致。深度解析:审计日志使用JSON过滤器控制事件记录,filter_id必须预先创建。修复代码:mysql> CREATE AUDIT_LOG_FILTER myfilter USING '{ "filter": { "log": true } }'; mysql> SET PERSIST audit_log_filter_id = 'myfilter'; 远程工具如MySQL Workbench或HeidiSQL连接实例执行,无需物理访问服务器。验证:SELECT * FROM performance_schema.audit_log_filter;

Stack Overflow聚合

用户报告:After enabling audit_log_policy, got ERROR 1148 (HY000): The audit log JSON filter 'default' does not exist. Solution: Many users fixed by running: CREATE AUDIT_LOG_FILTER default USING '{"filter":{"log":true}}'; SET GLOBAL audit_log_filter_id = 'default'; For remote: Use SSH tunnel or cloud proxy to connect securely.

Oracle官方文档摘录

The audit_log_filter_id system variable specifies the name of the JSON filter. If the specified filter does not exist, MySQL returns error ER_AUDIT_LOG_JSON_FILTER_DOES_NOT_EXIST. To create a filter: CREATE AUDIT_LOG_FILTER filter_name USING 'json_string'; Filters are stored in performance_schema.audit_log_filter table. Persist changes with SET PERSIST.

MySQL ER_AUDIT_LOG_JSON_FILTER_DOES_NOT_EXIST报错深度解析,故障修复与远程处理权威指南

知乎专栏

实际案例:金融系统MySQL审计配置出错。修复全过程:1. 备份配置。2. 停止审计:SET GLOBAL audit_log_policy='ALL'. 3. 删除无效过滤器。4. 新建:CREATE AUDIT_LOG_FILTER prod_filter USING '{ "filter": { "log": false, "event_class": { "audit": { "log": true } } }'; 5. 应用并测试日志输出。远程用navicat执行,注意权限user需AUDIT_ADMIN。

FAQ
Q: 为什么会出现这个错误?
A: 因为audit_log_filter_id指定的过滤器名称在performance_schema中不存在,通常配置变更或升级引起。
Q: 不重启能修复吗?
A: 是的,用SET PERSIST和FLUSH AUDIT LOGS即可动态生效。
Q: 远程怎么处理云数据库?
A: 通过控制台参数修改或SQL控制台执行创建过滤器命令。
Q: 常见JSON过滤器示例?
A: '{"filter":{"log":true}}' 为默认全日志;自定义排除特定表如{"event_class":{"table":{"name":"temp_*","log":false}}}。