MySQL道普請便り
第57回 mysql_config_editorを試してみよう
MySQLアカウントのログインパスワードを,
今回は,mysql_について紹介していきます。
mysql_config_editorを使ってみる
mysql_はMySQL5..mylogin.に,.mylogin.というファイルにして置くことができます。
ドキュメントでは暗号化と表記されています。しかし,.mylogin.内に一緒に格納されており解読ができてしまうため,
余談ではありますが,mysql_と似た名前のコマンドにmysql_がありますが,
難読化して登録する
それではさっそくmysql_を使って接続情報を難読化してみましょう。登録するにはsetコマンドを使って登録を行います。--login-pathオプションで,mysql_で管理をする時の名前を指定しています。このオプションのデフォルト値はclientです。--hostオプションで接続するホストを指定しています。--userオプションで接続の際に使用するユーザー名を指定しています。--passwordオプションを付けることで保存するパスワードを入力するダイアログを出します。
この他にも,--socketオプションや,--portオプションなどがあります。ただし,--socketオプションや--portオプションは5.
$ mysql_config_editor set --login-path=local --host=localhost --user=root --password
Enter password: #パスワードを入力する
$
以上のようにコマンドを実行すると,.mylogin.ファイルが作成されていることがわかります。
$ cat .mylogin.cnf
�uFb�������Q��_�IC)tش��A�� �����Մ�+�ԝs� �j��,L]q��F`a{jn>�S|��|Ņ�qh�
$
このようにcatを使って.mylogin.ファイルの中身を表示してみようとしてみても,
Windowsでは,.mylogin.ファイルが作成されていることがわかります。
難読化した情報を確認する
ここでは登録された情報を確認してみましょう。以下のようにprintコマンドを使うと,--allオプションを使うと登録されている接続情報を確認することができます。
$ mysql_config_editor print --all [client] user = root password = ***** host = localhost [local] user = root password = ***** host = localhost $
また,--login-pathオプションを指定することで個別に表示することもできます。
$ mysql_config_editor print --login-path=local [local] user = root password = ***** host = localhost $
接続する
次に,--login-pathで接続したいログインパスを設定します。
$ mysql --login-path=local Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 10 Server version: 5.7.19-log Homebrew Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
接続情報を削除する
登録した情報を消したい場合は,removeコマンドもしくはresetコマンドを使います。
removeコマンドを使う場合は,--login-pathと消したい情報をオプションとして付与します。以下では--hostオプションを使っています。--login-pathを設定しなかった場合はデフォルトのclientの情報を削除します。
$ mysql_config_editor print --login-path=local [local] user = root password = ***** host = localhost #host情報があります。 $ mysql_config_editor remove --login-path=local --host $ mysql_config_editor print --login-path=local [local] user = root password = ***** #host情報が削除されてなくなっています。 $
続いて--resetオプションですが,
$ mysql_config_editor print --all [client] user = root password = ***** [local] user = root password = ***** host = localhost
上記のように2件の登録があった場合,
$ mysql_config_editor reset $ mysql_config_editor print --all $
5.6以前のMySQLで同様のことがしたい場合
mysql_が使える環境ではないけれども,
そういった場合には,my.ファイルにパスワードを書いておくことで認証を楽にできます。
$ cat .my.cnf
[client]
password="パスワード"
こちらを利用すると以下のようにログインすることができます。
$ mysql -uroot
また,my.ファイルにパスワードを書いておくと,catコマンドなどで確認した時に,
まとめ
mysql_で設定したキーがあれば,
しかし,mysql_で生成された.mylogin.ファイルに入っているパスワードは難読化はされているものの,