Spec-Zone .ru
спецификации, руководства, описания, API
|
The general query log is a general record of what mysqld is doing. The server writes information to this log when clients connect or disconnect, and it logs each SQL statement received from clients. The general query log can be very useful when you suspect an error in a client and want to know exactly what the client sent to mysqld.
mysqld writes statements to the query log in the order that it receives them, which might differ from the order in which they are executed. This logging order contrasts to the binary log, for which statements are written after they are executed but before any locks are released. (Also, the query log contains all statements, whereas the binary log does not contain statements that only select data.)
By default, the general query log is disabled. To specify the initial general query log state explicitly, use --general_log[={0|1}]
. With no argument or an argument of 1, --general_log
enables the log. With an argument of 0, this option disables the
log. To specify a log file name, use --general_log_file=
. To
specify the log destination, use file_name
--log-output
(as described in Section
5.2.1, "Selecting General Query and Slow Query Log Output Destinations").
If you specify no name for the general query log file, the default name is
. The server creates the file in the data
directory unless an absolute path name is given to specify a different directory. host_name
.log
To disable or enable the general query log or change the log file name at runtime, use the global general_log
and general_log_file
system variables. Set general_log
to 0 (or OFF
) to disable the log or to 1
(or ON
) to enable it. Set general_log_file
to specify the name of the log file. If a log file already
is open, it is closed and the new file is opened.
When the general query log is enabled, the server writes output to any destinations specified by the --log-output
option or log_output
system variable. If you enable the log, the server opens the log file
and writes startup messages to it. However, further logging of queries to the file does not occur unless the
FILE
log destination is selected. If the destination is NONE
, the server writes no queries even if the general log is enabled. Setting
the log file name has no effect on logging if the log destination value does not contain FILE
.
Server restarts and log flushing do not cause a new general query log file to be generated (although flushing closes and reopens it). To rename the file and create a new one, use the following commands:
shell>mv
shell>host_name
.loghost_name
-old.logmysqladmin flush-logs
shell>mv
host_name
-old.logbackup-directory
On Windows, use rename rather than mv.
You can also rename the general query log file at runtime by disabling the log:
SET GLOBAL general_log = 'OFF';
With the log disabled, rename the log file externally; for example, from the command line. Then enable the log again:
SET GLOBAL general_log = 'ON';
This method works on any platform and does not require a server restart.
The session sql_log_off
variable can be set to ON
or OFF
to disable or enable
general query logging for the current connection.
As of MySQL 5.6.3, passwords in statements written to the general query log are rewritten by the server not to
occur literally in plain text. Password rewriting can be suppressed for the general query log by starting the
server with the --log-raw
option. This option may be useful for diagnostic purposes, to see the exact text of statements as received by
the server, but for security reasons is not recommended for production use.
Before MySQL 5.6.3, passwords in statements are not rewritten and the general query log should be protected. See Section 6.1.2.3, "Passwords and Logging".