审核Mysql查询

时间:2018-10-12 10:43:54

标签: mysql logging event-log syslog audit

我想在Windows和Linux上都启用Mysql Server的审核。我正在努力从MySQL服务器收集日志以用作日志分析器工具。因此,我首先需要知道如何对所有可能的查询(例如错误,警告,成功和信息)进行审核。

1)如何在Windows和Linux中的MySQL(任何版本)中启用审核。

2)如何将日志发送到syslog(Unix)和EventLog(Windows)?

任何人都可以针对上述问题分享明智的解决方案吗?

我在my.ini中添加了以下几行,但是由于以下几行,我可以重新启动mysql服务器。如果删除这些行并重新启动,则服务器将成功重新启动。

log_output="FILE"
general_log=1
general_log_file="E:\Logs\my-sql-general-log.log"

slow-query-log=1
slow_query_log_file="my-sql-slow-log.log"
long_query_time=10

我只尝试了一般日志,并遇到了同样的问题。我也尝试了general_log = on和general_log = 1。没有发现变化。

我在Windows 10上使用MySQL Server 5.0尝试了上述更改

编辑1:

我在my.ini中添加了以下行

log="C:/Program Files/MySQL/MySQL Server 5.0/logs/general-log.log"

添加以上行后,查询日志已写入文件中。错误仍不会写入,也不会转发到事件查看器。

编辑2:

1)我在Windows计算机中的 my.ini 中添加了以下几行

log="C:/Program Files/MySQL/MySQL Server 5.0/logs/my-sql-general-log.log"
log_bin="C:/Program Files/MySQL/MySQL Server 5.0/logs/my-sql-bin-log.log"
log_error="C:/Program Files/MySQL/MySQL Server 5.0/logs/my-sql-error-log.log"

log_slow_queries
long_query_time = 1

在这种情况下,所有查询都写入常规日志,但错误不写入错误日志。在错误日志中,仅写入mysql服务日志的开始/停止。

(i)如何将诸如“未选择数据库”或“表不存在”之类的错误写入错误日志文件?

(ii)如果在my.ini中添加log-output = TABLE,则mysql服务将不会重新启动。是什么原因导致此问题?在Linux中可以正常工作。

(iii)如何将这些日志发送到EventViewer?

2)我在Linux机器中的 my.cnf 中添加了以下几行

[mysqld_safe]
syslog

[mysqld]
general_log_file = /var/log/mysql/mysql.log
general_log = 1

log_error = /var/logs/mysql/error.log
log_slow_queries = /var/log/mysql/mysql-slow.log
long_query_time = 2
log-queries-not-using-indexes

log_bin = /var/log/mysql/mysql-bin.log

添加这些行后,常规日志将发送到syslog服务器,而不是错误日志。

(i)如何将诸如“未选择数据库”或“表不存在”之类的错误写入错误日志文件并将其发送到syslog服务器?

(ii)我也尝试过log-output=TABLE,但是当日志写入表时,它不会发送到syslog服务器。如果将日志写入表,如何将日志发送到syslog服务器?

一般日志的写法如下-

181017 11:46:41       1 Connect     root@localhost on 
                      1 Query       set autocommit=1
                      1 Query       SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
                      1 Query       SHOW SESSION VARIABLES LIKE 'lower_case_table_names'
                      1 Query       SELECT current_user()
                      1 Quit       

有没有办法像下面这样写日志?

Time               User             ThreadID   Command     Argument
181017 11:46:41    root@localhost   1          Connect     root@localhost on 
181017 11:46:41    root@localhost   1          Query       set autocommit=1
181017 11:46:41    root@localhost   1          Query       SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
181017 11:46:41    root@localhost   1          Query       SHOW SESSION VARIABLES LIKE 'lower_case_table_names'
181017 11:46:41    root@localhost   1          Query       SELECT current_user()
181017 11:46:41    root@localhost   1          Quit      

编辑3: 通过修改rsyslog.conf文件,我能够将所有日志发送到syslog,但是仍然无法将常规查询日志和慢速查询日志转发到Windows EventLog。

0 个答案:

没有答案