Open seungriyou opened 9 months ago
docker-compose.yml 파일을 작성한다.
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
민감한 정보는 .env로 관리한다.
.env
DB_HOST=localhost DB_PORT=3306 DB_ROOT_PASSWORD=1234 DB_USERNAME=sryou DB_PASSWORD=1234 DB_DATABASE=practice DB_TIMEZONE=Asia/Seoul
적용될 설정을 확인하여 환경 변수 값이 잘 반영되는지 확인한다.
docker-compose config
docker container를 실행한다.
docker-compose up -d
container에 접속하여 MySQL 서버에 로그인 한다.
docker exec -it mysql_db bash # >>> container >>>> mysql -u root -p # 환경변수로 설정한 비밀번호 입력
사용자와 데이터베이스를 생성하고 권한을 부여한다. (.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
다음의 에러가 발생한다면…!
Public Key Retrieval is not allowed
따라서 링크 의 해결 방법을 따라, Driver properties 항목을 다음과 같이 수정했다.
Driver properties
allowPublicKeyRetrieval
useSSL
좌측 하단의 Test Connection을 해보고, 완료를 누르면 된다! 🎉
MySQL을 Docker Compose로 띄우기
docker-compose.yml
파일을 작성한다.민감한 정보는
.env
로 관리한다.적용될 설정을 확인하여 환경 변수 값이 잘 반영되는지 확인한다.
docker container를 실행한다.
container에 접속하여 MySQL 서버에 로그인 한다.
사용자와 데이터베이스를 생성하고 권한을 부여한다. (
.env
파일대로!)DBeaver 연결하기
다음의 에러가 발생한다면…!
따라서 링크 의 해결 방법을 따라,
Driver properties
항목을 다음과 같이 수정했다.allowPublicKeyRetrieval
= trueuseSSL
= false좌측 하단의 Test Connection을 해보고, 완료를 누르면 된다! 🎉
References