Rechercher dans le manuel MySQL
4.5.1.3 mysql Client Logging
The mysql client can do these types of logging for statements executed interactively:
On Unix, mysql writes the statements to a history file. By default, this file is named
.mysql_history
in your home directory. To specify a different file, set the value of theMYSQL_HISTFILE
environment variable.On all platforms, if the
--syslog
option is given, mysql writes the statements to the system logging facility. On Unix, this issyslog
; on Windows, it is the Windows Event Log. The destination where logged messages appear is system dependent. On Linux, the destination is often the/var/log/messages
file.
The following discussion describes characteristics that apply to all logging types and provides information specific to each logging type.
How Logging Occurs
For each enabled logging destination, statement logging occurs as follows:
Statements are logged only when executed interactively. Statements are noninteractive, for example, when read from a file or a pipe. It is also possible to suppress statement logging by using the
--batch
or--execute
option.Statements are ignored and not logged if they match any pattern in the “ignore” list. This list is described later.
mysql logs each nonignored, nonempty statement line individually.
If a nonignored statement spans multiple lines (not including the terminating delimiter), mysql concatenates the lines to form the complete statement, maps newlines to spaces, and logs the result, plus a delimiter.
Consequently, an input statement that spans multiple lines can be logged twice. Consider this input:
In this case, mysql logs the
“SELECT”, “'Today is'”,
“,”, “CURDATE()”, and “;”
lines as it reads them. It also logs the complete statement,
after mapping SELECT\n'Today
is'\n,\nCURDATE()
to SELECT 'Today is' ,
CURDATE()
, plus a delimiter. Thus, these lines appear
in logged output:
mysql ignores for logging purposes statements
that match any pattern in the “ignore” list. By
default, the pattern list is
"*IDENTIFIED*:*PASSWORD*"
, to ignore
statements that refer to passwords. Pattern matching is not case
sensitive. Within patterns, two characters are special:
?
matches any single character.*
matches any sequence of zero or more characters.
To specify additional patterns, use the
--histignore
option or set the
MYSQL_HISTIGNORE
environment variable. (If
both are specified, the option value takes precedence.) The
value should be a colon-separated list of one or more patterns,
which are appended to the default pattern list.
Patterns specified on the command line might need to be quoted
or escaped to prevent your command interpreter from treating
them specially. For example, to suppress logging for
UPDATE
and DELETE
statements in addition to statements that refer to passwords,
invoke mysql like this:
shell> mysql --histignore="*UPDATE*:*DELETE*"
Controlling the History File
The .mysql_history
file should be protected
with a restrictive access mode because sensitive information
might be written to it, such as the text of SQL statements that
contain passwords. See Section 6.1.2.1, “End-User Guidelines for Password Security”.
If you do not want to maintain a history file, first remove
.mysql_history
if it exists. Then use
either of the following techniques to prevent it from being
created again:
Set the
MYSQL_HISTFILE
environment variable to/dev/null
. To cause this setting to take effect each time you log in, put it in one of your shell's startup files.Create
.mysql_history
as a symbolic link to/dev/null
; this need be done only once:shell> ln -s /dev/null $HOME/.mysql_history
syslog Logging Characteristics
If the --syslog
option is given,
mysql writes interactive statements to the
system logging facility. Message logging has the following
characteristics.
Logging occurs at the “information” level. This
corresponds to the LOG_INFO
priority for
syslog
on Unix/Linux
syslog
capability and to
EVENTLOG_INFORMATION_TYPE
for the Windows
Event Log. Consult your system documentation for configuration
of your logging capability.
Message size is limited to 1024 bytes.
Messages consist of the identifier
MysqlClient
followed by these values:
SYSTEM_USER
The system user name (login name) or
--
if the user is unknown.MYSQL_USER
The MySQL user name (specified with the
--user
option) or--
if the user is unknown.CONNECTION_ID
:The client connection identifier. This is the same as the
CONNECTION_ID()
function value within the session.DB_SERVER
The server host or
--
if the host is unknown.DB
The default database or
--
if no database has been selected.QUERY
The text of the logged statement.
Here is a sample of output generated on Linux by using
--syslog
. This output is formatted for
readability; each logged message actually takes a single line.
Mar 7 12:39:25 myhost MysqlClient[20824]:
SYSTEM_USER:'oscar', MYSQL_USER:'my_oscar', CONNECTION_ID:23,
DB_SERVER:'127.0.0.1', DB:'--', QUERY:'USE test;'
Mar 7 12:39:28 myhost MysqlClient[20824]:
SYSTEM_USER:'oscar', MYSQL_USER:'my_oscar', CONNECTION_ID:23,
DB_SERVER:'127.0.0.1', DB:'test', QUERY:'SHOW TABLES;'
Traduction non disponible
Le manuel MySQL n'est pas encore traduit en français sur l'infobrol. Seule la version anglaise est disponible pour l'instant.
Document créé le 26/06/2006, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/mysql-rf-mysql-logging.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.
Références
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.