ホーム

🏉

docker&mysql再入門

作成日: 2024-01-27T08:57:00.000Z

最終更新: 2024-08-07T13:15:00.000Z


概要

dockerでmysqlに接続する

各種手順

コンテナを一覧表示する

psはProcess Statusの略

docker ps

コンテナに入る

-it オプションは、対話的なシェルセッションを開始するためのもので、bash はコンテナ内で実行するコマンド

docker exec -it <コンテナ名またはコンテナID> bash

MySQLサーバに接続する

  • rootで入る場合
    • MySQL データベースのインストール時に、デフォルトで root というユーザーが作成されます。root ユーザーは、MySQL の最高権限を持つ管理者アカウントです。
mysql -u root -p
  • 設定したuserとpassで入る場合
    • compose.yamlのMYSQL_USERMYSQL_PASSWORD に設定している情報を参照
mysql -u user_name -p

データベース一覧表示

show databases;

databaseのスイッチ

use database_name;

テーブル表示

show table_name;

テーブルの中身表示

SELECT * FROM table_name;

docker mysql 初期データの設定

<details>
<summary>例</summary>

  • /host/path: ホストマシンのディレクトリやファイルのパス
  • /container/path: コンテナ内のディレクトリやファイルのパス

/host/path/container/path の間にはコロン : を使用してマッピングします。ホストマシンのパスとコンテナ内のパスは、絶対パスまたは相対パスのいずれかを指定できます。

volumes:
      - /host/path:/container/path

</details>

以下を追加する。

  • ./docker/db
    • docker-compose.yamlから見た、.sqlなどのDBファイルが置いてあるpath
  • docker-entrypoint-initdb.d
    • Docker コンテナ内の MySQL イメージにおいて、初期化スクリプトやデータベースの初期データを読み込むための特別なディレクトリ
volumes:
      - ./docker/db:/docker-entrypoint-initdb.d

初期データ

  • DROP TABLE IF EXISTS
    • 存在していれば削除
  • CREATE TABLE IF NOT EXISTS
    • 存在していなければ作成
  • type
    • unsigned
      • 0 と正の数しか格納できなくなる
  • PRIMARY KEY
    • このテーブル内のユニークキーとなる値

デバッグ

下記コマンドを試すと、sqlの中身の正しさを評価できる。

mysql -u user_name -p database_name < /docker-entrypoint-initdb.d/init.sql