Mysql查询的审计

Mysql查询的审计,mysql,logging,event-log,syslog,audit,Mysql,Logging,Event Log,Syslog,Audit,我想在Windows和Linux上启用Mysql服务器的审计。我正在为日志分析器工具从MySQL服务器收集日志。因此,我首先需要知道如何对所有可能的查询(如错误、警告、成功和信息)进行审核 1) 如何在Windows和Linux中启用MySQL(任何版本)审计 2) 如何将日志发送到syslog(Unix)和EventLog(Windows) 有人能分享上述问题的分步解决方案吗 我在my.ini中添加了下面几行,但是由于下面几行的原因,我可以重新启动mysql服务器。如果删除这些行并重新启动,服

我想在Windows和Linux上启用Mysql服务器的审计。我正在为日志分析器工具从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。没有发现变化

我在Windows10和MySQL服务器5.0上尝试了上述更改

编辑1:

我在my.ini中添加了下面的行

log="C:/Program Files/MySQL/MySQL Server 5.0/logs/general-log.log"
添加上述行后,查询日志将写入该文件。错误仍然没有写入,也没有转发到事件查看器

编辑2:

1) 我在我的Windows机器中将下面的行添加到我的.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机器中的.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)我也尝试了
日志输出=表
,但当日志写入表时,它不会发送到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