我想在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。