mysql コマンドの履歴を残したくない場合は MYSQL_HISTFILE=/dev/null

タイトルで内容を全部書いてしまった。

SQL を直接 mysql コマンドから発行する場合、デフォルトでは履歴が $HOME/.mysql_history に残ります。次回起動した場合にも履歴をさかのぼれるわけですが、たとえば「本番データベースに繋いで更新、削除系の操作を実行する」ような場合。これは履歴に残ったものを間違って再実行してしまうと、大変な悲劇を引き起こす可能性があります。

とうことで、(緊張しながら本番で) 削除 SQL を実行した場合、手作業で .mysql_history をエディタで編集して消したりしていましたが、ここでよいツッコミが @n0ts さんから。


検索したところすぐ見つかりました。

履歴ファイルを保持したくない場合、まず.mysql_history が存在する場合消去し、以下の手段を用いてください。

  • MYSQL_HISTFILE 変数を/dev/null に設定してください。ログインするたびにこのセッティングが効果を表すようにするには、このセッティングをシェルのスタートアップファイルのいずれかに置いてください。
  • .mysql_history を/dev/null に対してのシンボリックリンクとして作成してください。
http://dev.mysql.com/doc/refman/5.1-olh/ja/mysql-command-options.html

一時的にヒストリを無効にしたい場合は、shell から mysql コマンドを実行する際に変数を設定すれば OK です。

$ MYSQL_HISTFILE=/dev/null mysql -u root mysql

恐怖の誤爆を避けて、安心して運用したいものですね!