dockerを使用してmariadbを構築する

dockerを使用してmariadbを構築する

dockerを使って、mariadbを構築する手順を記述。docker-compose.ymlを作成して構築してます。

環境

  • OS ubuntu 20.04
  • docker 19.03.8
  • docker compose 1.25.4

docker-compose.yml作成

下記の内容でdocker-compose.ymlを任意の場所に作成します。

portは3306を既に使用しているので3307に変更してます。

version : "3"
services:
  db:
    image: mariadb
    restart: always
    ports:
      - 3307:3306
    volumes:
      - "./mysql:/var/lib/mysql"
      - "./initdb.d:/docker-entrypoint-initdb.d"
    environment:
      - MYSQL_ROOT_PASSWORD=pwd
      - MYSQL_DATABASE=test
      - MYSQL_USER=user
      - MYSQL_PASSWORD=pwd

  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080

アップします。

docker-compose up -d

volumesは、ここではymlファイルと同一階層に生成されます。

コンテナを表示して確認してみます。

docker ps

<出力結果>
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
02ca3a7d44d2        adminer             "entrypoint.sh docke…"   19 seconds ago      Up 12 seconds       0.0.0.0:8080->8080/tcp   mariadb_adminer_1
ee962b8bffb3        mariadb             "docker-entrypoint.s…"   19 seconds ago      Up 13 seconds       0.0.0.0:3307->3306/tcp   mariadb_db_1

mariadb接続

adminerを利用して、作成したmariadbにアクセスしてみます。

ブラウザから http://プライベートIP:8080 にアクセスします。
※firewallを有効している場合はportの設定をして下さい

adminerが表示されていることが確認できます。

必要情報を入力してログインします。

データベース種類 : MySQL
サーバー : mariadb_db_1
ユーザー名 : root
パスワード : pwd
データベース : test

ログインできると下記の画面が表示されます。

作成した「user」というユーザーが存在するか確認してみます。

画面右にある「SQLコマンド」を選択して、以下のクエリを実行します。

SELECT * FROM mysql.user;

userが作成されていることが確認できます。

コンテナに直接アクセス場合は下記のコマンドを実行して下さい。

docker exec -it mariadb_db_1 bash

<コンテナ内>
# mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 8
Server version: 10.4.12-MariaDB-1:10.4.12+maria~bionic mariadb.org binary distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>