logo

English

이곳의 프로그래밍관련 정보와 소스는 마음대로 활용하셔도 좋습니다. 다만 쓰시기 전에 통보 정도는 해주시는 것이 예의 일것 같습니다. 질문이나 오류 수정은 siseong@gmail.com 으로 주세요. 감사합니다.

Docker를 통한 MySQL 설치하기

by lizard2019 posted Apr 15, 2021
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print

1. 도커 버전 확인

docker --version

2. MySQL Docker 이미지 다운로드

아래 명령어를 통해 MySQL 8.0.17 태그 이미지를 다운로드한다.
태그에는 MySQL 버전을 명시하며. 만약 태그에 버전을 명시하지 않으면, 최신 버전인 latest를 가져온다.

docker pull mysql:8.0.17

docker hub에서 내려받을 수 있는 mysql 버전 참고 : https://hub.docker.com/_/mysql/

Docker 이미지 확인

docker images

3. Docker MySQL 컨테이너 생성 및 실행

  • 호스트의 /Users/{내계정}/datadir 디렉토리를 컨테이너의 /var/lib/mysql 디렉토리로 마운트
  • docker에 mysql과 같은 DB를 설치하는 경우 컨테이너 삭제와 함께 데이터도 날라가므로, 저장소는 반드시 외부 저장소를 사용한다.

ex) -v /Users/digipine/datadir:/var/lib/mysql

docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password --name digipine-mysql -v /Users/digipine/datadir:/var/lib/mysql mysql:8.0.17
  • 하지만 위 명령어로 실행하여 mysql db를 생성하여 개발 시 한글문제가 발생 할 것이다.
  • 한글이 깨지지 않도록 설정하려면 아래 인자값을 넣어주어야 한다.
 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

ex )

 docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password --name digipine-mysql -v /Users/digipine/datadir:/var/lib/mysql mysql:8.0.17 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

위 명령어를 실행하여 컨테이너를 올려도 되지만 아래와 같이 docker-compose.yml 파일로 만들어서 실행할 수 있다.

  • 장황환 도커 옵션을 한눈에 볼 수 있어 편하다.

docker-compose.yml 파일 생성.

version: "3" # 파일 규격 버전
services: # 이 항목 밑에 실행하려는 컨테이너 들을 정의
  db: # 서비스 명
    image: mysql:8.0.17 # 사용할 이미지
    container_name: digipine-mysql # 컨테이너 이름 설정
    ports:
      - "3306:3306" # 접근 포트 설정 (컨테이너 외부:컨테이너 내부)
    environment: # -e 옵션
      MYSQL_ROOT_PASSWORD: "password"  # MYSQL 패스워드 설정 옵션
    command: # 명령어 실행
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci
    volumes:
      - /Users/digipine/datadir:/var/lib/mysql # -v 옵션 (다렉토리 마운트 설정)

실행 docker-compose 파일 실행

  • docker-compose.yml 작성한 위치에서 실행
  • 백그라운드로 실행 시 옵션 -d 붙이면 됨.
    • 자세한건 옵션 참고
docker-compose up -d

4. Docker 컨테이너 목록 출력

docker ps -a

5. MySQL 컨테이너 bash 쉘 접속

docker exec 명령을 사용하여 docker 컨테이너에 접근한 다음 MySQL에 로그인한다.

docker exec -it digipine-mysql bash

6. MySQL 서버 접속

로컬에서 mysql를 설치하고 접속하는 방법과 동일. 패스워드는 MySQL 컨테이너를 실행할 때 지정한 정보를 입력한다.

  • MYSQL_ROOT_PASSWORD = password
root@f3af78fa6428:/#mysql -u root -p

mysql>

7. 데이터베이스와 사용자를 생성하고 (컨테이너 내에서) MySQL에서 권한을 부여한다.

  • jmlim이라는 사용자를 생성하고, 모든 권한을 부여한다.
  • 변경된 권한 적용

중요 : 컨테이너 외부에서 MySQL에 로그인도 가능해야 하므로 jmlim@localhost에서 localhost 대신 %를 사용한다.

mysql> CREATE USER 'digipine'@'%' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON *.* TO 'digipine'@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> quit

TAG •

List of Articles
No. Subject Author Date Views
22 [PostgreSQL] 간단 사용법 digipine 2017.11.02 5378
21 Filter를 이용한 웹 프로그래밍 Filter 란 무엇인가? file siseong@naver.com 2017.10.31 4739
20 MySQL root 비밀번호 변경하기 (MySQL 5.7버전 이상) lizard2019 2019.06.10 3322
19 Eclipse, JSP, Beans 실습하기 digipine 2017.10.29 3144
18 Apache Tomcat 설치후 관리자 모드 실행 되지 않을때 문제 해결방법 digipine 2017.11.01 3078
17 MS Access MDB를 위한 DB Connection String digipine 2017.10.29 1731
16 [Oracle] SQL*Plus 개요,각종 명령어들 digipine 2017.10.28 1347
15 Choosing a free database - DB2 digipine 2017.10.29 1255
14 SyBase 사용법 요약 digipine 2017.10.28 1107
13 SyBase 와 JSP 연동 digipine 2017.10.28 985
12 Ubuntu mySql 완전 삭제하기 lizard2019 2021.04.15 958
11 MySQL 시작할때 No directory, logging in with HOME=/ 에러 해결 방법, 홈 디렉토리 변경 digipine 2021.05.06 845
10 SQLite 활용 팁 3 - 다른 DB 테이블에 트리거 사용하기 digipine 2017.11.01 815
9 HTTP Multi Part Request Sample Format digipine 2017.11.01 809
8 MySQL Data Backup - Database Dump 방법 및 복구 방법 엉뚱도마뱀 2017.11.18 783
7 Ubuntu에서 sqlite3 빌드 방법 digipine 2017.11.01 758
6 MySQL 5.7.x 버전 root 및 유저 암호(Password) 변경 digipine 2017.11.02 721
» Docker를 통한 MySQL 설치하기 lizard2019 2021.04.15 676
4 서블릿(Servlet) 이란 무엇인가? siseong@naver.com 2017.11.01 599
3 SQLite 활용 팁 2 - 트리거 실전 사용하기 digipine 2017.11.01 546
Board Pagination Prev 1 2 Next
/ 2