如何配置MySQL以记录所有GRANT和REVOKE权限变更的详细日志?
- 内容介绍
- 文章标签
- 相关推荐
本文共计913个文字,预计阅读时间需要4分钟。
MySQL的`general_log`功能是用于记录所有执行的SQL语句,包括`GRANT`和`REVOKE`命令的原始文本。这是唯一能够捕获这些语句执行原文的日志机制。但请注意:
开启方式很简单,但有三个关键点必须同步处理:
- 确保
log_output设为'TABLE'或'FILE'(推荐'TABLE',方便 SQL 过滤) -
general_log必须设为ON,且最好在低峰期启用 - 如果用文件输出,需确认 MySQL 进程对目标路径有写权限(常被忽略导致日志静默失效)
如何只查 GRANT/REVOKE 行为(TABLE 模式下)
当 log_output = 'TABLE' 时,日志写入 mysql.general_log 表(注意:该表是 CSV 引擎,不支持索引,大数据量时 LIKE 查询会慢)。
本文共计913个文字,预计阅读时间需要4分钟。
MySQL的`general_log`功能是用于记录所有执行的SQL语句,包括`GRANT`和`REVOKE`命令的原始文本。这是唯一能够捕获这些语句执行原文的日志机制。但请注意:
开启方式很简单,但有三个关键点必须同步处理:
- 确保
log_output设为'TABLE'或'FILE'(推荐'TABLE',方便 SQL 过滤) -
general_log必须设为ON,且最好在低峰期启用 - 如果用文件输出,需确认 MySQL 进程对目标路径有写权限(常被忽略导致日志静默失效)
如何只查 GRANT/REVOKE 行为(TABLE 模式下)
当 log_output = 'TABLE' 时,日志写入 mysql.general_log 表(注意:该表是 CSV 引擎,不支持索引,大数据量时 LIKE 查询会慢)。

