我是否可以在mysql数据库上打开审计日志?

我基本上想监视一个小时的所有查询,并将日志转储到一个文件中。


当前回答

除了我在这里遇到的方法之外,运行下面的方法是在不重新启动的情况下将查询转储到日志文件的最简单方法

SET global log_output = 'FILE';
SET global general_log_file='/Applications/MAMP/logs/mysql_general.log';
SET global general_log = 1;

可以关机用吗

SET global general_log = 0;

其他回答

除了我在这里遇到的方法之外,运行下面的方法是在不重新启动的情况下将查询转储到日志文件的最简单方法

SET global log_output = 'FILE';
SET global general_log_file='/Applications/MAMP/logs/mysql_general.log';
SET global general_log = 1;

可以关机用吗

SET global general_log = 0;

值得一提的是,general_log和slow_log是在5.1.6中引入的:

http://dev.mysql.com/doc/refman/5.1/en/log-destinations.html

5.2.1. 选择常规查询和慢速查询日志输出目的地 从MySQL 5.1.6开始,MySQL服务器提供了灵活的控制 输出到一般查询日志和慢速查询日志的目的地, 如果启用了这些日志。日志条目的可能目的地是 日志文件或mysql中的general_log和slow_log表 数据库

打开表的日志

mysql> SET GLOBAL general_log = 'ON';
mysql> SET GLOBAL log_output = 'table';

通过select query查看日志

SELECT * FROM mysql.general_log

如果查询太多,则截断表:

TRUNCATE table mysql.general_log;

顶部的答案不工作在mysql 5.6+。用这个代替:

[mysqld]
general_log = on
general_log_file=/usr/log/general.log

在my.cnf / my.ini文件中

Ubuntu / Debian: /etc/mysql/my.cnf Windows: c:\ProgramData\MySQL\MySQL Server 5.x mysql wamp: c: \ wamp \ bin \ \ mysqlx.y.z \ my.ini mysql xampp: c: \ xampp \ \ bin \ my.ini。

更新:不再适用于mysql 5.6+

使用——log选项启动mysql:

mysqld --log=log_file_name

或者将以下内容放在my.cnf文件中:

log = log_file_name

任何一个都将把所有查询记录到log_file_name。

您也可以使用——log-slow-queries选项而不是——log只记录慢查询。默认情况下,需要10秒或更长时间的查询被认为是慢查询,您可以通过将long_query_time设置为查询在被记录日志之前必须执行的秒数来改变这一点。