はじめに
この記事では、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.
と表示され、起動したことが確認できます。
また、docker container ls
で db
という名前のコンテナが3306番ポートで起動していることも確認できます。
オプションに --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
に切り替わります。
以下のコマンドで、MySQL のバージョンを確認できます。
select version();
次の操作に向け、一度コンテナを停止(削除)します。
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.
と表示され、起動したことが確認できます。
MySQL サーバーに接続する
今回は起動時に指定したユーザーやデータベースを指定して、MySQL サーバーに接続します。
mysql --host=127.0.0.1 --port=3306 --user=app --password=app_password test
プロンプトが mysql
に切り替わった後、以下のコマンドで、MySQL 接続時に認証が行われたユーザー名とホスト名が取得できます。
select current_user();
また、起動時に指定したデータベースが作成されていることも確認できます。
show databases;
参考
関連記事