记录MySQL交互查询

17 浏览
0 Comments

记录MySQL交互查询

我有几个人直接在一些系统中进行数据库查询。

我想要将所有通过交互/手动方式进行的查询日志记录到一个安全的syslog服务器上,或者如果不行的话,记录所有通过使用mysql二进制客户端进行的查询。

我正在使用Debian Jessie和Oracle MySQL 5.6.31。

我该如何实现这个目标?

0
0 Comments

MySQL 5.7引入了一个新的选项--syslog,允许将交互式查询写入系统日志。根据MySQL 5.7参考手册中的说明,使用--syslog选项时,日志记录具有以下特性:

- 日志记录级别为“信息”级别,对应于Unix/Linux系统日志功能的LOG_INFO优先级,对应于Windows事件日志的EVENTLOG_INFORMATION_TYPE。具体的日志配置请参考系统文档。

- 信息大小限制为1024字节。

- 日志消息由标识符MysqlClient和以下值组成:

- SYSTEM_USER:系统用户名称(登录名)或--(如果用户未知)。

- MYSQL_USER:MySQL用户名称(使用--user选项指定)或--(如果用户未知)。

- CONNECTION_ID:客户端连接标识符,与会话中的CONNECTION_ID()函数值相同。

- DB_SERVER:服务器主机名或--(如果主机未知)。

- DB:默认数据库名称或--(如果未选择数据库)。

- QUERY:日志记录语句的文本。

下面是在Linux上使用--syslog生成的样本输出。这里的输出格式是为了可读性而进行了格式化;实际上,每条日志消息都占据一行。

Mar 7 12:39:25 myhost MysqlClient[20824]: SYSTEM_USER:'oscar', MYSQL_USER:'my_oscar', CONNECTION_ID:23, DB_SERVER:'127.0.0.1', DB:'--', QUERY:'USE test;'

Mar 7 12:39:28 myhost MysqlClient[20824]: SYSTEM_USER:'oscar', MYSQL_USER:'my_oscar', CONNECTION_ID:23, DB_SERVER:'127.0.0.1', DB:'test', QUERY:'SHOW TABLES;'

如果不想创建别名,还可以将syslog添加到/etc/mysql/my.cnf文件的[mysql]部分或/etc/mysql/conf.d/目录中的文件中。

MySQL 5.7引入了--syslog选项,允许将交互式查询写入系统日志。通过使用--syslog选项,可以按照特定的格式记录查询语句的相关信息。如果不想使用别名,也可以在/etc/mysql/my.cnf文件的[mysql]部分或/etc/mysql/conf.d/目录中的文件中添加syslog配置。这样,就可以将MySQL的交互式查询日志记录到系统日志中。

0
0 Comments

问题出现的原因是从MySQL 5.7开始,现在有了将日志记录到syslog的选项。解决方法是在/etc/mysql/my.cnf或/etc/mysql/conf.d/中的[mysql]部分中添加syslog。具体操作如下:

1. 打开/etc/mysql/my.cnf或在/etc/mysql/conf.d/中创建一个文件。

2. 在文件中添加以下内容:

[mysql]

syslog

3. 保存文件并关闭。

这样可以很方便地将日志集成到logwatch中。

0