見出し画像

[MySQL]Windows11に、WSL2+Ubuntu+Dockerで開発環境を作る -2023年5月13日(土)

MySQLのシリーズをマガジン化しています。
MySQLに関する全ての解説記事は、こちらをご覧ください!

・MySQLのリファレンスを1から読んでみようと思った。
・その際、MySQLの環境がないと不便なので、環境を作る。
・プログラミングを始めようと思った人が最初に躓くのが環境構築だと思う。(特にWindowsユーザ)
・ので、やり方を記載しておく。

・これまで、Hyper-Vで作ったり、Vagrant+VirtualBOXで作ったりしていたが、Hyper-Vは単にUIが使いずらいし、Vagrant+VirtualBOXは古の技術と言う感じが否めない。
・今更、Dockerを使ったところで、新しくもなんともないが、それでもLinux環境に直接MySQLやらApacheを入れるよりはましだと思うので、勉強がてらDockerも使うことにする。

・手順としては、以下の5つだけ。20~30分でできる。

①WSL2のインストール

・PowerShellを管理者権限で開く。
スタートメニューを開き、"PowerShell"を検索し、右クリックして"管理者として実行"を選択。
・次のコマンドを実行して、WSLを有効にする。

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

dism.exe
Deployment Image Servicing and Management (DISM)というツールの実行ファイルです。DISMはWindowsイメージ(.wimファイル)や仮想ディスク(.vhdまたは.vhdx)をサービスするためのコマンドラインツールです。
/online
操作がオンラインイメージに対して実行されることを指定します。オンラインイメージとは、現在動作中のWindowsです。
/enable-feature
特定の機能またはパッケージを有効にすることを指定します。
/featurename:Microsoft-Windows-Subsystem-Linux
有効にする機能の名前を指定します。この場合、有効にする機能はWSLです。
/all
指定した機能が他の機能に依存している場合に、その依存関係にあるすべての機能を同時に有効にすることを指定します。
/norestart
操作が完了した後でシステムを再起動しないように指定します。

・次のコマンドを実行して、仮想マシンプラットフォームを有効にする。

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

/featurename:VirtualMachinePlatform
有効にする機能の名前を指定します。この場合、有効にする機能は「Virtual Machine Platform」です。

・PCを再起動する。
・以下のコマンドを実行して、WSL2をデフォルトバージョンとして設定する。

wsl --set-default-version 2

②Ubuntuのインストール

・Microsoft Storeを開いて、「Ubuntu」で検索し、好きなバージョンを入れる。
・まあ無難に、LTSがついてる最新を選ぶのがいい。(自分は20.04.6 LTSを入れてます。)
・スタートメニューからUbuntuを開いて、ターミナルが開けばよい。
※VPNを繋いでいるとエラーになる場合があるので、注意。

③Docker Desktopのインストール

・Docker Desktopの公式サイトからDocker Desktop for Windowsをダウンロードする。
・ダウンロードしたインストーラーを実行して、インストールする。
・Docker Desktopを開き、Settings > General > 「Use the WSL 2 based engine」を有効にする。
・Dockerがインストールされたことを確認する。Ubuntuターミナルで以下を実行。

docker run hello-world

以下が、色々なメッセージと共に出ていればOK。

Hello from Docker!
This message shows that your installation appears to be working correctly.

④Docker上でMySQLの設定

・Dockerコンテナを立てる。
passwordには、あなたのパスワードを入れよう。

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=password -d -p 3306:3306 mysql

--name some-mysql
コンテナに名前を付けます(この例ではsome-mysql)。
-e MYSQL_ROOT_PASSWORD=password
環境変数MYSQL_ROOT_PASSWORDを設定します。これはMySQLのrootユーザーのパスワードになります。password部分は自分のパスワードに置き換えてください。
-d
コンテナをバックグラウンドモード(デタッチモード)で実行します。
-p 3306:3306
ホストのポートとコンテナのポートをマッピングします。この例では、ホストOSのポート3306をコンテナのポート3306にマッピングしています。
mysql
使用するDockerイメージを指定します。

コマンドの説明

・デスクトップで起動したDocker DesktopのContainersでmysqlが立ち上がってるはず。
・Ubuntuターミナルで、docker ps -aで確認してもよい。

⑤MySQLへのログイン

・MySQLに接続する。

docker exec -it some-mysql mysql -uroot -ppassword

passwordには④で設定したパスワードを入れる。

docker exec -it some-mysql
名前がsome-mysqlのコンテナでコマンドを実行します。-itオプションはインタラクティブモードを意味します。
mysql -uroot -ppassword
MySQLに接続するコマンドです。-urootはユーザー名(この場合はroot)を指定します。-ppasswordはパスワードを指定します。パスワードを設定するときは-pとパスワードの間にスペースを入れないように注意してください。

・以上でMySQLは準備完了。
・作業を終えるときは、Docker DesktopでMySQLを停止させるだけ。
・データベースもテーブルもデータも何もない状態ですが。
・リファレンスに沿って、来週はMySQLの機能を試していきます。


続きは以下となります。(5月16日公開予定)


この記事が気に入ったらサポートをしてみませんか?