Clear mysql command line history stored in ~/.mysql_history file

Posted on in Categories , , , , , , , , , , , , , last updated June 7, 2007

Q. How do I clear the mysql command line history stored in ~/.mysql_history file?

A. mysql is a simple SQL shell. It supports interactive and non-interactive use.

On Unix and Linux, the mysql client writes a record of executed statements to a history file. By default, the history file is named .mysql_history and is created in your home directory. To specify a different file, set the value of the MYSQL_HISTFILE environment variable.


Remove ~/.mysql_history by typing following command:
$ > ~/.mysql_history

If you do not want to maintain a history file, first remove .mysql_history if it exists, and then use either of the following techniques:

Set the MYSQL_HISTFILE variable to /dev/null. To cause this setting to take effect each time you log in, put the setting in one of your shell’s startup files.

Create ~/.mysql_history as a symbolic link to /dev/null. You need run following command only once:
$ rm $HOME/.mysql_history
$ ln -s /dev/null $HOME/.mysql_history

3 comment

  1. Setting MYSQL_HISTFILE to /dev/null is not such a good idea as mysql tries to creates the file on startup. Thus it replaces /dev/null by a regular file accessible only by root – not something you want to do on your server system!
    In case you already tried and hosed your /dev/null, the following command will restore it:
    mknod -m 666 /dev/null c 1 3

  2. charon,

    This a sym link, so it will not remove /dev/null and you should never use root account to connect to mysql as root. You can do that from normal user too..

    Appreciate your comment.

  3. nixcraft,
    if you set the environment variable MYSQL_HISTFILE to /dev/null, there is no symlink but the file is accessed directly. If you create the symlink, you don’t run into the troubles I described. Of course you’re right, you should never ever work as root, but… you know…

Leave a Comment