1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

DockerでMySQL8.0のコンテナを作成

Last updated at Posted at 2023-05-07
はじめに

MySQL8.0のDBコンテナをサクッと作成し、MySQLのコマンド練習したかったので、下記の記事を参考にDockerを使って環境構築した。

事前準備

環境構築に必要なファイルは下記3つ

docker-compose
version: "3"
services:
  db:
    image: mysql:8.0
    volumes:
      - db-store:/var/lib/mysql
      - ./logs:/var/log/mysql
      - ./docker/mysql/my.cnf:/etc/mysql/conf.d/my.cnf
    environment:
      - MYSQL_DATABASE=${DB_NAME}
      - MYSQL_USER=${DB_USER}
      - MYSQL_PASSWORD=${DB_PASS}
      - MYSQL_ROOT_PASSWORD=${DB_PASS}
      - TZ=${TZ}
    ports:
      - ${DB_PORT}:3306

  db-testing:
    image: mysql:8.0
    volumes:
      - ./docker/mysql/my.cnf:/etc/mysql/conf.d/my.cnf
    tmpfs:
      - /var/lib/mysql
      - /var/log/mysql
    environment:
      - MYSQL_DATABASE=${DB_NAME}
      - MYSQL_USER=${DB_USER}
      - MYSQL_PASSWORD=${DB_PASS}
      - MYSQL_ROOT_PASSWORD=${DB_PASS}
      - TZ=${TZ}

volumes:
  db-store:
.env
DB_NAME=database
DB_USER=root
DB_PASS=password
DB_PORT=13306
TZ=Asia/Tokyo
my.cnf
# MySQLサーバーへの設定
[mysqld]
# 文字コード/照合順序の設定
character-set-server = utf8mb4
collation-server = utf8mb4_bin

# タイムゾーンの設定
default-time-zone = SYSTEM
log_timestamps = SYSTEM

# デフォルト認証プラグインの設定
default-authentication-plugin = mysql_native_password

# エラーログの設定
log-error = /var/log/mysql/mysql-error.log

# スロークエリログの設定
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 5.0
log_queries_not_using_indexes = 0

# 実行ログの設定
general_log = 1
general_log_file = /var/log/mysql/mysql-query.log

# mysqlオプションの設定
[mysql]
# 文字コードの設定
default-character-set = utf8mb4

# mysqlクライアントツールの設定
[client]
# 文字コードの設定
default-character-set = utf8mb4
Docker-build
$ docker-compose up -d  #コンテナ構築
$ docker-compose ps     #コンテナ確認
MySQLへログイン
$ docker-compose exec db bash -c 'mysql -u${MYSQL_USER} -p${MYSQL_PASSWORD} ${MYSQL_DATABASE}'

$ docker-compose exec db bash #MySQLサーバーへアクセス
$ mysql -u${MYSQL_USER} -p${MYSQL_PASSWORD} ${MYSQL_DATABASE}  #MySQLへログイン
Docker-初期化
$ docker-compose down --volumes #コンテナ初期化
おわりに

Docker-Buildまでは順調に進めることが出来た。
mysqlのテストデータを保存・移動・読込で、下記3点で詰まったが無事解決する事が出来。
これでMySQLのコマンド練習に取り掛かれる!

【詰まった所】
・ローカル内のディレクトリをコンテナ内のディレクトリにコピー
→DockerでMySQLサーバーへアクセスして、所定のディレクトリを指定してコピー
・コンテナ内のディレクトリ内のファイルを開く際、ERROR 1044 (42000) の権限エラー
→コンテナログイン時のuserをrootに変更
・コンテナ内に保存したmysqlデータを読み込む際に、mysqlデータ内のsourceが実行されない。
→mysqlデータが置いてあるディレクトリでコマンドを実行しないと、sourceが実行されなかった。

1
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?