On Unix, the mysql client logs statements
executed interactively 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 the
MYSQL_HISTFILE environment variable.
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.
mysql logs each nonempty statement line individually.
If a 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:
mysql>SELECT->'Today is'->,->CURDATE()->;
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:
SELECT 'Today is' , CURDATE() ; SELECT 'Today is' , CURDATE();
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