首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL查询日志

MySQL查询日志
EN

Database Administration用户
提问于 2013-12-05 21:42:48
回答 2查看 2.2K关注 0票数 1

我想知道是否有替代MySQL通用查询日志的方法。我想记录(大部分) DDL语句,这样我可以跟踪哪些用户DROP数据库/表等等。我知道启用通用查询日志可能会导致一些性能下降。

问题:

  • 我可以只使用一般查询日志记录/筛选DDL语句吗?
  • 是否有选项可以在文件系统上指定通用查询日志的位置?
  • 是否有其他选项/解决方案,例如登录到rsyslog?

问候

编辑:12月6日星期五10:57:31格林尼治时间2013年

在文件系统上设置通用查询日志的目标似乎是可能的,但是由于性能的影响,我仍然在寻找其他方法。

EN

回答 2

Database Administration用户

回答已采纳

发布于 2013-12-09 07:18:28

A)

审计MySQL服务器的不同方法:

  • 错误日志
  • 慢速查询日志
  • 二进制日志
  • 自定义触发器
  • 使用MySQL代理
  • 常规日志-您可以通过编辑一般日志文件变量在my.cnf中的值将普通日志文件路径更改为其他路径。

你可以参考这篇博文:http://serge.frezefond.com/2013/04/how-can-we-audit-a-mysql-server/

B)

使用MySQL审计插件

有由MySQL和一些分支发布的审计插件,如果您担心MySQL服务器上的安全性,可以尝试它们。

1) MySQL企业审计

企业审计使用开放的MySQL审核API来启用标准的、基于策略的监视和记录在特定MySQL服务器上执行的连接和查询活动。

2) McAfee审计插件 -开源

设计时强调安全和审计要求。该插件可以用作独立的审计解决方案,也可以配置为将数据提供给外部监视工具。

3) MariaDB审计插件

许多企业都使用审计条例来确保它们符合法律和行业标准。这类条例往往要求对用户访问数据库数据的过程进行跟踪。

票数 2
EN

Database Administration用户

发布于 2013-12-07 14:45:17

记录(至少)DDL的最快方法是使用二进制日志,它对性能的影响最小。它以二进制格式存储,默认情况下写入文件系统缓存,因此它不会向磁盘添加额外的同步刷新操作。典型的间接开销约为5%,如果您使用5.6's二进制日志组提交、主级别的筛选或使用2种主要的binlog格式(即使在行模式下,DDL也以语句格式存储),这种开销可能会更小。您可以使用mysqlbinlog工具将这些绑定日志转换为人类可读的日志。

binlog的问题在于它不跟踪用户名和主机,因此它可能对您的目的毫无用处。无论如何,激活二进制日志几乎总是一个好主意。

我认为这里最好的选择是一个审计插件,因为您基本上是在尝试这样做(审计查询和用户)。有几个选项可用,您甚至可以自己编写一个,但我喜欢McAfee审计插件,它是免费的,开源的,对本例来说足够好。这里是浅谈如何使用它。您可以将其配置为监视"drop"s (和/或任何其他命令)。这应该比激活一般日志花费更少(而且更方便),但我自己还没有对其进行基准测试。它可以以json格式登录到文件或UNIX套接字。这是一个示例输出:

代码语言:javascript
复制
{"msg-type":"activity","date":"1369155747373","thread-id":"6439",
"query-id":"0","user":"debian-sys-maint",
"priv_user":"debian-sys-maint","host":"localhost",
"cmd":"Connect","query":"Connect"}
票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/54546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档