seungriyou / spring-study

자바 스프링 부트를 배워봅시다 🔥
0 stars 0 forks source link

[DB] MySQL Docker Compose로 띄우기 #17

Open seungriyou opened 9 months ago

seungriyou commented 9 months ago

MySQL을 Docker Compose로 띄우기

  1. docker-compose.yml 파일을 작성한다.

    추후 링크 자료 참고하여 조금 더 수정해야 할 듯! 각각의 요소에 대해서도 알아보자.

    version: '3.8'
    
    services:
      db:
        image: mysql:8.0
        platform: linux/x86_64
        container_name: mysql_db
        restart: always
        ports:
          - ${DB_PORT}:${DB_PORT}
        env_file:
          - .env
        environment:
          MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
          MYSQL_DATABASE: ${DB_DATABASE}
          MYSQL_USER: ${DB_USERNAME}
          MYSQL_PASSWORD: ${DB_PASSWORD}
          TZ: ${DB_TIMEZONE}
        command:
          - --default-authentication-plugin=mysql_native_password
          - --character-set-server=utf8mb4
          - --collation-server=utf8mb4_unicode_ci
        volumes:
          - ./db/mysql/conf.d:/etc/mysql/conf.d
          - ./db/mysql/data:/var/lib/mysql
          - ./db/mysql/initdb.d:/docker-entrypoint-initdb.d
        healthcheck:
          test: [ "CMD", "mysqladmin", "ping", "-p${DB_ROOT_PASSWORD}" ]
          retries: 3
          timeout: 5s
  2. 민감한 정보는 .env로 관리한다.

    DB_HOST=localhost
    DB_PORT=3306
    DB_ROOT_PASSWORD=1234
    DB_USERNAME=sryou
    DB_PASSWORD=1234
    DB_DATABASE=practice
    DB_TIMEZONE=Asia/Seoul
  3. 적용될 설정을 확인하여 환경 변수 값이 잘 반영되는지 확인한다.

    docker-compose config
  4. docker container를 실행한다.

    docker-compose up -d
  5. container에 접속하여 MySQL 서버에 로그인 한다.

    docker exec -it mysql_db bash
    
    # >>> container >>>>
    mysql -u root -p # 환경변수로 설정한 비밀번호 입력
  6. 사용자와 데이터베이스를 생성하고 권한을 부여한다. (.env 파일대로!)

    mysql> CREATE DATABASE practice;
    Query OK, 1 row affected (0.07 sec)
    
    mysql> CREATE USER 'sryou'@'%' IDENTIFIED BY 'password';
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> GRANT ALL PRIVILEGES ON *.* TO 'sryou'@'%';
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> quit


DBeaver 연결하기

다음의 에러가 발생한다면…!

Public Key Retrieval is not allowed

image

따라서 링크 의 해결 방법을 따라, Driver properties 항목을 다음과 같이 수정했다.

좌측 하단의 Test Connection을 해보고, 완료를 누르면 된다! 🎉

image

image


References