MySQL クライアントの mysql
コマンドで実行した SQL は、~/.mysql_hisotry
というファイルに保存されるのですが、docker-compose down
とかしてコンテナを削除すると、当然このファイルも消えてしまい、履歴が消えてしまいます。
これでは不便なので、ホスト側にファイルを書き込むようにして、毎回これをマウントする方法を考えました。
まずホスト側に .mysql_history
を保存するディレクトリを作ります。
名前や場所はなんでも構いません。
$ mkdir -p docker/mysql/history
次にこれをマウントし、環境変数 MYSQL_HISTFILE
で .mysql_history
の保存先を変更します。
マウント先もファイル名も、MYSQL_HISTFILE
でパスさえ指定できれば、どこでも構いません。
$ docker run --rm -e MYSQL_HISTFILE=/root/.config/mysql/.mysql_hisotry -v ${PWD}/docker/mysql/history:/root/.config/mysql mysql
docker-compose.yml
の場合はこんな感じ。
version: '3'
services:
mysql:
container_name: mysql
image: mysql
restart: always
volumes:
- ./docker/mysql/data:/var/lib/mysql
- ./docker/mysql/history:/root/.config/mysql # ← これと
environment:
MYSQL_HISTFILE: /root/.config/mysql/.mysql_hisotry # ← これ
やってみると簡単だけど、ググってもあまり情報が見付からなかったのでメモでした。