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 MySQL 시작할때 No directory, logging in with HOME=/ 에러 해결 방법, 홈 디렉토리 변경 digipine 2021.05.06 1034
» Docker를 통한 MySQL 설치하기 lizard2019 2021.04.15 805
20 Ubuntu mySql 완전 삭제하기 lizard2019 2021.04.15 1104
19 MySQL root 비밀번호 변경하기 (MySQL 5.7버전 이상) lizard2019 2019.06.10 3490
18 MySQL Data Backup - Database Dump 방법 및 복구 방법 엉뚱도마뱀 2017.11.18 1010
17 [PostgreSQL] 간단 사용법 digipine 2017.11.02 5483
16 MySQL 5.7.x 버전 root 및 유저 암호(Password) 변경 digipine 2017.11.02 833
15 SQLite 활용 팁 3 - 다른 DB 테이블에 트리거 사용하기 digipine 2017.11.01 899
14 SQLite 활용 팁 2 - 트리거 실전 사용하기 digipine 2017.11.01 646
13 SQLite 활용 팁 2 - 트리거 실전 사용하기 digipine 2017.11.01 545
12 SQLite 활용 팁 1 - 트리거 활용하기 digipine 2017.11.01 573
11 Ubuntu에서 sqlite3 빌드 방법 digipine 2017.11.01 862
10 HTTP Multi Part Request Sample Format digipine 2017.11.01 865
9 서블릿(Servlet) 이란 무엇인가? siseong@naver.com 2017.11.01 700
8 Apache Tomcat 설치후 관리자 모드 실행 되지 않을때 문제 해결방법 digipine 2017.11.01 3215
7 Filter를 이용한 웹 프로그래밍 Filter 란 무엇인가? file siseong@naver.com 2017.10.31 4841
6 Eclipse, JSP, Beans 실습하기 digipine 2017.10.29 3249
5 MS Access MDB를 위한 DB Connection String digipine 2017.10.29 1850
4 Choosing a free database - DB2 digipine 2017.10.29 1356
3 [Oracle] SQL*Plus 개요,각종 명령어들 digipine 2017.10.28 1449
Board Pagination Prev 1 2 Next
/ 2