LoginSignup
1
1
お題は不問!Qiita Engineer Festa 2024で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

【docker container】MySQL サーバーを起動し、ユーザーとデータベースを作成する

Last updated at Posted at 2024-06-18

はじめに

この記事では、Docker の docker container run コマンドを使って MySQL サーバを起動し、ユーザーとデータベースを作成する手順について記載します。

開発環境

開発環境は以下の通りです。

  • Windows 11
  • Docker Engine 26.1.1
  • MySQL 8.0.33 for Win64 on x86_64

MySQL サーバーを起動する

まずは以下のコマンドで MySQL サーバーをコンテナで起動します。

docker container run               `
--name db                          `
--rm                               `
--env MYSQL_ROOT_PASSWORD=password `
--publish 3306:3306                `
mysql
  • --name : コンテナ名を db に指定
  • --rm : コンテナ停止時にコンテナを自動削除
  • --env : 環境変数 MYSQL_ROOT_PASSWORD の値を password に指定
  • --publish : コンテナの3306番ポートをホストマシンの3306番ポートにマッピング

MySQL Server - start. と表示され、起動したことが確認できます。

image.png

また、docker container lsdb という名前のコンテナが3306番ポートで起動していることも確認できます。

image.png

オプションで環境変数を指定しないと、以下のエラーメッセージが表示され、コンテナの起動に失敗します。

image.png

オプションに --detach を追加すると、コンテナをバックグラウンドで実行することができます。
以下のようにコマンド実行後、コンテナIDが表示されます。その後、プロンプトが切り替わり、操作待ちになります。

docker container run               `
--name db                          `
--rm                               `
--detach                           `
--env MYSQL_ROOT_PASSWORD=password `
--publish 3306:3306                `
mysql
f159f7efd7a93f5a44f4ebe2d0791c87efef2bda139ce9b3642bd567c672d885

MySQL サーバーに接続する

次に以下のコマンドで、ホストマシンからコンテナの MySQL サーバーに接続します。

mysql --host=127.0.0.1 --port=3306 --user=root --password=password
  • --host : ローカルサーバー
  • --port : サーバー起動時に指定したホストマシンのポート番号(3306番は MySQL サーバーのデフォルト値のため省略可能)
  • --user : ルートユーザー
  • --password : サーバー起動時に指定したパスワード

プロンプトが mysql に切り替わります。

image.png

以下のコマンドで、MySQL のバージョンを確認できます。

select version();

image.png

次の操作に向け、一度コンテナを停止(削除)します。

docker container stop db

MySQL サーバーを起動し、ユーザーとデータベースを作成する

今度はコンテナで MySQL サーバーを起動した際、ユーザーとデータベースが作成されるようにします。

docker container run                    `
--name db                               `
--rm                                    `
--env MYSQL_ROOT_PASSWORD=root_password `
--env MYSQL_USER=app                    `
--env MYSQL_PASSWORD=app_password       `
--env MYSQL_DATABASE=test               `
--publish 3306:3306                     `
mysql
  • MYSQL_ROOT_PASSWORD : ルートユーザーのパスワード
  • MYSQL_USER : 起動時に作成するユーザー
  • MYSQL_PASSWOR : 作成するユーザーのパスワード
  • MYSQL_DATABAS : 起動時に作成するデータベース

今回も MySQL Server - start. と表示され、起動したことが確認できます。

image.png

MySQL サーバーに接続する

今回は起動時に指定したユーザーやデータベースを指定して、MySQL サーバーに接続します。

mysql --host=127.0.0.1 --port=3306 --user=app --password=app_password test

プロンプトが mysql に切り替わった後、以下のコマンドで、MySQL 接続時に認証が行われたユーザー名とホスト名が取得できます。

select current_user();

image.png

また、起動時に指定したデータベースが作成されていることも確認できます。

show databases;

image.png

参考

関連記事

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1