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.
ファイルに入っているパスワードは難読化はされているものの、