実践的Docker活用術：MySQLコンテナへのログイン方法と、一行コマンドでの簡単ログインを紹介してみた

## はじめに
前回の記事では、Go言語とDockerを活用し、簡単な環境構築を行いながらMySQLコンテナと接続する手順をまとめました。

👉 **前回の記事はこちら**

https://qiita.com/free-honda/items/a530614e6f113a825fa1

今回は、その続きとして、MySQLコンテナ内にログインして確認する方法を解説します。

:::note warn
***この記事では、GoアプリケーションとMySQLが連携している環境で、コンテナ内部を探索しながら詳細を確認する手順に焦点を当てます。***
:::

***この内容がどなたかの技術学習の支えになれば幸いです。***

## 書こうと思ったきっかけ
前回の記事では内容が少し多くなりすぎてしまい、おまけとして予定していた「***起動中のMySQLコンテナにログインする方法***」の紹介を見送ることにしました。

:::note info
**そのため、今回は改めてこの内容を1本の記事として整理し、投稿することにしました。**
:::

この記事では、プログラミング言語そのものよりも、コンテナ内に入るコマンドやMySQLにログインするコマンドに焦点を当てています。

***これらは定期的に復習しないと忘れがちなため、記録としてまとめることで、今後の参考になればと思っています。***

## Go言語とDockerの知識整理
Go言語やDockerの基礎知識については、前回の記事で詳しくまとめていますので、必要に応じてそちらをご参照ください。

https://qiita.com/free-honda/items/27031bdf1b20e1cfae1f

また、Go言語が端末にインストールされていない場合は、初回の記事で環境構築の手順（Windows、Linux、Macそれぞれ）を解説しています。***まだ環境構築が済んでいない方は、そちらを参考にしてみてください。***

https://qiita.com/free-honda/items/b3672e2ccfedbb14773a

## 実際にMySQLコンテナに入ってみた

### 1. コンテナ一覧を確認
まず、稼働中のMySQLコンテナの名前を確認します。以下のコマンドを実行してください。

```bash
docker ps
```

**出力例：**

```bash
➜  my-go-app git:(honda-branch) ✗ docker ps
CONTAINER ID   IMAGE           COMMAND                  CREATED          STATUS          PORTS                               NAMES
de1e88b61ba7   my-go-app-app   "/wait-for-it.sh db:…"   50 minutes ago   Up 30 seconds   0.0.0.0:8080->8080/tcp              go_app
2cc7a94b8c89   mysql:8.0       "docker-entrypoint.s…"   50 minutes ago   Up 30 seconds   0.0.0.0:3306->3306/tcp, 33060/tcp   mysql_db
➜  my-go-app git:(honda-branch) ✗ 
```

ここで、`mysql_db` がMySQLコンテナの名前であることがわかります。この名前を使用して、次のステップでコンテナに接続します。

### 2. コンテナに接続
次に、MySQLコンテナ内に接続します。以下のコマンドを実行してください。

```bash
docker exec -it <コンテナ名> bash
```

これで、MySQLコンテナ内のシェルに入ることができます。

**出力例：**

```bash
➜  my-go-app git:(honda-branch) ✗ docker exec -it mysql_db bash
bash-5.1#
```

### 3. MySQLにログイン
コンテナ内のシェルで、MySQLに接続します。

```bash
mysql -u root -p
```

プロンプトが表示されたら、`MYSQL_ROOT_PASSWORD` で設定したパスワード（例：`password`）を入力してください。

**出力例：**

```bash
bash-5.1# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.40 MySQL Community Server - GPL

Copyright (c) 2000, 2024, Oracle and/or its affiliates.

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>
```

## まとめ
最後まで読んでいただき、ありがとうございました！今回の記事をまとめることで、自分自身の知識を改めて体系化する良い機会となりました。

:::note warn
**基本的なコマンドをどれだけ使いこなせるかによって作業効率が大きく変わってくると思いますので、今後も積極的に活用していきたいと思います。**
:::

***次回は少し変わった内容として、Go言語で簡単に立ち上げたアプリと自宅のVirtualBox上にあるMySQLをつなげる技術検証をしてみたいと思います！***

## おまけ: 私がいつも使っている便利なコマンド
実は、コンテナへの接続とMySQLへのログインを一括で実行できる便利なコマンドがあります。

```bash
docker exec -it <コンテナ名> mysql -u root -p
```

このコマンドを使えば、1行でMySQLのシェルに直接入ることができるため、とても便利です。

:::note info
**ただし、少し長いので、毎回正確に覚えているわけではありません。**
:::

そのため、以下のように `history` コマンドや `grep` コマンドを使って履歴から検索し、コピペして使うことが多いです（笑）。

```bash
➜  Desktop git:(honda-branch) ✗ history | grep exec
・・・
・・・
 6727  docker exec -it mysql_db mysql -u root -p
➜  Desktop git:(honda-branch) ✗ docker exec -it mysql_db mysql -u root -p
```

***この最強の組み合わせコマンドについては、過去の記事でも詳しくまとめていますので、ぜひ参考にしてみてください。***

https://qiita.com/free-honda/items/ae82ecf888352b839c5b