WindowsのMySQLコマンドラインでログインする4つの方法(mysql_config_editor)

2024年12月26日

パソコンからMySQLのデータベースに対してSQLを操作する標準的なツールとして「MySQLモニタ」があります。
これはコマンドによる対話形式のCUIツールです。
MySQLをインストールすると一緒に導入されるのでどなたでも使えるようになっています。
GUIで様々な管理が出来る標準ツール「MySQL Workbench」もありますが、まずはMySQLモニタからSQLを発行して使いこなせるようになることをお勧めします。

本記事ではWindowsで説明していますが、他のOSでも同様に用意されておりMySQLモニタの基本的な使い方はほとんど共通です。

サンプルはパスワードを「password」としていますがここはマネしないでくださいね(笑)

1.MySQLへパスワードを対話形式で入力してログインする

コマンドプロンプトで以下のコマンドを入力してMySQLに接続します。
-pをつけるとエンターキーを押した後にパスワードの入力を求められます。

mysql -u root -p
Enter passwrd:(パスワードを聞かれるので入力する)

実行例)パスワードを対話形式で入力する

スポンサードサーチ

2.MySQLへユーザーとパスワードをコマンドライン引数で記述して接続する

パスワードをコマンドラインで直接記述することも可能です。
-pに空白を空けずに入力します。
正常に接続出来ると「mysql>」のプロンプトが表示されます。

実行例)ユーザーが「root」でパスワードが「passwd」の場合

スポンサードサーチ

3.MySQLへのログインをユーザーとパスワードをテキストエディタで外部ファイルに記述してセキュリティを確保する

上記2つの方法は自宅などでMySQLを学習するなどセキュリティを気にする必要がほとんどない場合はよいのですが、システム開発の現場などではバッチ処理に直書きはご法度です。

セキュリティを確保したログインにする場合は他の人がアクセスできないようなテキストファイルに記述してログインのコマンドラインに指定します。

以下の手順でログイン情報を記述したテキストファイルを準備します

①ユーザーとパスワードをテキストファイルに記述する(例としてファイル名を「.MySQLlogin.cnf」とします)

[client]
user=root
password=password

②作成したテキストファイルをユーザーのホームディレクトリ(%HOMEPATH%)配下に保存する

ファイル名に「%HOMEPATH%.MySQLlogin.conf」と指定します。(サブディレクトリが必要な場合適宜追加してください)

③ログインしてみる

コマンドラインに下記を入力します。

mysql –defaults-file=C:\Users\<ユーザー名>\.MySQLlogin.cnf

これでコマンドラインにユーザーとパスワードを記述することなくログイン出来るようになりました。

4)更にログイン情報ファイルのアクセスを制限する

上記3)のログイン情報ファイルをもっとアクセスしずらいようにするには下記2点の方法があります。

1)隠しファイルにする

こちらは簡単に探されてしまうので気休め程度ですが、ファイルを右クリックして「隠しファイル」のチェックを付けます。

2)アクセス権で制御する

①ログイン情報の記述ファイルを右クリック

②「セキュリティ」タブをクリック

③「グループ名またはユーザー名」の「編集」をクリック

④アクセス権を設定します。

アクセスさせたくないユーザーにフルコントロールで「拒否」をクリックするかユーザーを「削除」します。

自分に拒否設定などするとアクセスできなくなるので注意が必要です。

サーバーなどの場合は管理者と相談しつつ設定を行ってください。

4.MySQLで用意されている接続情報作成用コマンド(mysql_config_editor)で外部ファイルに定義する

これまで色々な方法を説明してきましたが、MySQLでは暗号化された接続情報を外部ファイルに作成するコマンドを提供しています。

1)ログインの定義(ログインパス)を作成する

<コマンドの構文>
以下はユーザーとパスワードをログインパス名を付けて定義するコマンドです。

mysql_config_editor set –login-path=<ログインパス名> –user=<ユーザー名> –password

ログインパス名はユーザーとパスワードの組み合わせに付けるラベルです

コマンドを実行するとパスワードを聞いてくるので入力します。

<実行例>

ログインパス名:mysql01
ユーザー名:root
パスワード:password

c:\>mysql_config_editor set –login-path=mysql01 –user=root –password
Enter password: *************

2)作成した定義でMySQLにログインしてみる

上記で作成したログインパスで接続してみましょう

接続は下記のように入力します

mysql –login-path=<ログインパス名>

<実行例>

先ほど作成したログインパス名「mysql01」を指定して接続します

c:\>mysql –login-path=mysql01
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 19
Server version: 8.0.15 MySQL Community Server – GPL
 
Copyright (c) 2000, 2019, 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>

 

3)ログインパス定義をリストする

作成したログインパスの定義を参照することが出来ます。
当然ながらパスワードは見ることが出来ずアスタリスク表示となります。

<コマンドの構文>

mysql_config_editor print –login-path=<ログインパス名> ログインパスを指定してリストする場合

mysql_config_editor print –all   全てのログインパス情報をリストする場合

<実行例>

ログインパス「mysql01」を指定してリストします。

c:\>mysql_config_editor print –login-path=mysql01
[mysql01]
user = root
password = *****
 
c:\>

4)定義されたログインパスファイルの形式は?

作成されたログインパスのファイル保存先は下記となります。

フォルダ名:「C:\Users\<ユーザー名>\AppData\Roaming\MySQL」
ファイル名:「.mylogin.cnf」

またファイルは覗かれても下記のように暗号化されています。

しかし、漏洩すると使用されてしまいますので前項のアクセス権を設定するなどして管理するのがいいでしょう。

スポンサードサーチ

まとめ

MySQLにWindowsのコマンドラインで接続する方法を紹介しました。

学習用に操作するだけでしたらコマンドラインにユーザーやパスワードを入力しても問題ないですが、バッチ処理などシステム開発の現場ではしっかり隠蔽された認証ファイルに記述するのが良いでしょう。