それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

MySQL/mariadb でパスワードをコマンドラインから指定する

MySQL でパスワードをコマンドラインから指定する

mysql で特定のコマンドを自動実行しようとしたり、定形のSQLを自動実行するときに、パスワードを外部から指定したい。

自動でバックアップを取りたい時など、パスワードを外部から指定したいことは山ほどある。

とくにdockerなどの dockerfile で指定するときにこれがないと データベースの初期化や初期データ投入をpythonrubyスクリプトに頼ることになり不便だ。

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

加筆