본문 바로가기
카테고리 없음

로컬테스트를 위한 MySql 설치하기 (with Docker )

by simongs 2020. 12. 17.

실행환경

  • Windows 10
  • Docker version 20.10.0, build 7287ab3

진행순서

1. MySQL 이미지를 DockerHub로부터 가져온다.

C:\Users\chopo>docker pull mysql:latest
latest: Pulling from library/mysql
Digest: sha256:365e891b22abd3336d65baefc475b4a9a1e29a01a7b6b5be04367fcc9f373bb7
Status: Image is up to date for mysql:latest
docker.io/library/mysql:latest

2. 가져온 이미지의 정보를 확인한다.

C:\Users\chopo>docker images
REPOSITORY               TAG       IMAGE ID       CREATED         SIZE
mysql                    latest    ab2f358b8612   4 days ago      545MB

3. MySQL 이미지를 수행한다.

windows

C:\Users\chopo>docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password --name simons-mysql -v C:\workspace\workspace-docker\mysql_repo:/var/lib/mysql mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
a2009d0a02c0b38e6a84bb62291c397d903be6f68b2dca7901cbc02e3de708ca

mac

```
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=qwerasdf --name simons-mysql8 -v /Users/chopokmado/workspace/workspace-docker/localdb/mysql8:/var/lib/mysql mysql:latest
```

-d : Daemon, 즉 백그라운드로 수행한다.
-p 3306:3306 : 앞 3306 은 현재 로컬 PC의 포트를 의미하고 뒤의 3306은 수행한 컨테이너 내부의 3306 포트를 의미한다. 포트포워딩을 설정한다.
--name : 해당 컨테이너의 name을 설정한다.
-v 로컬경로:컨테이너경로 : 컨테이너가 shutdown 되어도 데이터가 보관될 수 있도록 로컬PC의 경로를 매핑한다.
한글을 위한 옵션 설정

4. 현재 활성화된 컨테이너 프로세스 정보를 확인한다.

C:\Users\chopo>docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                               NAMES
a2009d0a02c0   mysql     "docker-entrypoint.s…"   2 minutes ago   Up 2 minutes   0.0.0.0:3306->3306/tcp, 33060/tcp   simons-mysql

5. container id를 통해서 해당 컨테이너의 terminal interface에 접근한다.

C:\Users\chopo>docker exec -it a2009d0a02c0 bash
root@a2009d0a02c0:/# 

6. 사용자를 추가한다.

root@a2009d0a02c0:/# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.22 MySQL Community Server - GPL

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

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

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

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

mysql> quit
Bye

7. 로컬PC의 DB 클라이언트 프로그램을 통해서 접속한다.

Reference

댓글