mysql查询的审计

3wabscal  于 2021-06-18  发布在  Mysql
关注(0)|答案(0)|浏览(251)

我想在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\u log=on和general\u log=1。找不到变化。
我在Windows10和MySQLServer5.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服务器?
(二)我也试过了 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。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题