MySQL でパスワードをコマンドラインから指定する
mysql で特定のコマンドを自動実行しようとしたり、定形のSQLを自動実行するときに、パスワードを外部から指定したい。
自動でバックアップを取りたい時など、パスワードを外部から指定したいことは山ほどある。
とくにdockerなどの dockerfile で指定するときにこれがないと データベースの初期化や初期データ投入をpythonやruby のスクリプトに頼ることになり不便だ。
mysql -u jump -h 10.1.2.1 --password=my_user_password db
パスワードをプロンプトではなくコマンドで直接指定できるのはちょっとだけ便利だけど。
さらに便利にする
パスワードを平分で残すのはさすがに、ちょっとね。ということも在るので、これを環境変数にすると良い。
## 何処か別の場所で export $MY_MariaDB_PASSWORD=my_user_password ## その後パスワードを利用 mysql -u jump -h 10.1.2.1 --password=$MY_MariaDB_PASSWORD db
こうすると、あちこちにパスワードを平文記述しなくて済む。 なんなら、これをSSH経由で実行すると更に便利。
Dockerなどでcompose をつかってDBを上げてるときに、いちいちインスタンスにログイン( exec -it ) せずにMySQLに対しメンテナンスを実行できるので重宝する。
バックアップなどにも
ssh のコマンド起動と、環境変数とgzip の合わせ技で戦うことも出来る。
ssh tekitou-server "mysqldump -u jump -h 10.1.2.1 --password=$MY_MariaDB_PASSWORD db" | gzip > $(date -I ).sql.gz
2018-05-22
加筆