일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Flutter
- Pod
- wireshark
- VSCode
- RTMP
- configmap
- spring cloud config
- deployment
- Android
- Kubernetes
- service
- nginx-media-server
- ffmpeg
- Python
- Java
- HLS
- macos
- namespace
- kubectl
- Sysinternals
- android studio
- docker
- Windows10
- Shell script
- ebpf
- dart
- aws
- golang
- aws cli
- 행정구역분류
- Today
- Total
woonizzooni
Docker mysql 설치, DB생성, 테이블생성 예시 본문
(참고 : Docker 설치 및 실행 환경은 아래 게시글 참고
https://woonizzooni.tistory.com/entry/Docker-Toolbox-설치-메모리-확장-디스크-확장-timezone변경)
1. Kitematic GUI환경에서 MySQL 컨테이너 생성 & 실행 (난 별로)
1-1. 'Kitematic (Alpha)' 바로가기 실행
음.. docker와 연결하는 과정 인데, 화면을 캡쳐 못했네...
1-2. Containers > New > mysql 검색 & 선택
1-3. CREATE클릭 : MySQL 컨테이너 다운로드 & 실행
1-4. MySQL 컨테이너 실행상태 확인
1-5. EXEC버튼을 클릭하여 MySQL 컨테이너 쉘 진입
2. CLI 쉘환경에서 MySQL 컨테이너 생성 & 실행
2-1. docker 실행 쉘 진입 (Windows10 > Docker Toolbox 환경)
아래 3방법중 편한걸로
- 명령 프롬프트 실행 (Path에 docker 실행파일 경로가 설정되어 있다는 전제)
- Docker Quickstart Terminal 실행
- 터미널로 VM에 ssh로 접속 (id/passwd = docker/tcuser)
2-2. MySQL docker 이미지 다운로드 & Container 실행
- mysql 데이터 저장용 컨테이너 생성 ※ 공유폴더를 사용하면 안됨!
$ docker create --name mysqldb_data -v /mnt/sdb1/mysql mysql
- mysql 데이터 저장용 컨테이너를 볼륨으로 마운트하면서 컨테이너 실행
$ docker run -d -p 3306:3306 --volumes-from mysqldb_data -v /mnt/sdb1/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=비밀번호 --name mysqldb mysql
$ docker create --name mysqldb_data -v /mnt/sdb1/mysql mysql
Unable to find image 'mysql:latest' locally
latest: Pulling from library/mysql
...
f864cfdc0264: Pull complete
Digest: sha256:415ac63da0ae6725d5aefc9669a1c02f39a00c574fdbc478dfd08db1e97c8f1b
Status: Downloaded newer image for mysql:latest
742cd269abd8b9c5dd19039e8d5b9a68329c8f5eccc47a0225aec5e46d9e3eec
$ docker run -d -p 3306:3306 \
--volumes-from mysqldb_data \
-v /mnt/sdb1/mysql:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=비밀번호 \
--name mysqldb \
mysql
213acd3a395e8e3ae47e00b9633b85315cc2a82df0c3b37fcf695827fc6083af
docker@default:~$ docker ps
CONTAINER ID IMAGE COMMAND ... STATUS PORTS NAMES
213acd3a395e mysql "docker-entrypoint.s…" ... 0.0.0.0:3306->3306/tcp, 33060/tcp mysqldb
docker@default:~$ docker ps -a
CONTAINER ID IMAGE COMMAND ... STATUS PORTS NAMES
213acd3a395e mysql "docker-entrypoint.s…" ... 0.0.0.0:3306->3306/tcp, 33060/tcp mysqldb
742cd269abd8 mysql "docker-entrypoint.s…" ... Created mysqldb_data
- 이후 부터 컨테이너 name이 있는 경우
$ docker start 컨테이너이름
2-3. MySQL 컨테이너 쉘 진입
$ docker exec -i -t 컨테이너이름 bash
$ docker exec -i -t mysqldb bash
root@213acd3a395e:/# df -h
Filesystem Size Used Avail Use% Mounted on
overlay 18G 486M 17G 3% /
tmpfs 64M 0 64M 0% /dev
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda1 18G 486M 17G 3% /etc/hosts
shm 64M 0 64M 0% /dev/shm
/dev/sdb1 98G 235M 93G 1% /var/lib/mysql
tmpfs 2.0G 0 2.0G 0% /proc/asound
tmpfs 2.0G 0 2.0G 0% /proc/acpi
tmpfs 2.0G 0 2.0G 0% /proc/scsi
tmpfs 2.0G 0 2.0G 0% /sys/firmware
3. MySQL 접속, DB생성, 테이블 생성 등....
3.1. CLI쉘
- mysql 접속
root@213acd3a395e:/# mysql -u root -p <-- (참고) 213acd3a395e : 컨테이너 ID
Enter password: 비밀번호 입력
- DB 조회 & 생성
mysql> SHOW DATABASES;
mysql> CREATE TABLE DB명 (testonly)
- DB선택 & 테이블 생성
mysql> USE DB명 (testonly)
mysql> CREATE TABLE 테이블명(컬럼1, 컬럼2, ...
- 데이터 입력 / 조회 / 삭제 ...
root@f20938fcae0b:/# mysql -u root -p
Enter password: 비밀번호 입력
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 8.0.16 MySQL Community Server - GPL
Copyright (c) 2000, 2019, 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>
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
6 rows in set (0.00 sec)
mysql> CREATE DATABASE testonly;
Query OK, 1 row affected (0.01 sec)
mysql> USE testonly;
Database changed
mysql> CREATE TABLE customer(
-> customer_id integer not null,
-> customer_name varchar(30) not null,
-> customer_age integer not null,
-> unique(customer_id)
-> );
Query OK, 0 rows affected (0.05 sec)
mysql> INSERT INTO customer (customer_id, customer_name, customer_age)
-> VALUES (1, 'Tester', 40);
Query OK, 1 row affected (0.01 sec)
mysql> SELECT * FROM customer;
+-------------+---------------+--------------+
| customer_id | customer_name | customer_age |
+-------------+---------------+--------------+
| 1 | Tester | 40 |
+-------------+---------------+--------------+
1 row in set (0.00 sec)
mysql> DELETE FROM customer WHERE customer_id = 0;
Query OK, 0 rows affected (0.00 sec)
[SQL 참고]
SQL Tutorial (CREATE DATABASE, CREATE TABLE, INSERT INTO, SELECT, DELETE등 Statement 설명)
https://www.w3schools.com/sql/default.asp
3.2. GUI 환경
- MySQL Workbench 설치 & 실행 (혹은 MySQL을 지원하는 SQL GUI Tools for Windows.. )
- 연결 설정 후 OK
connection mame :
hostname : docker VM의 IP, Port : 3306,
username : root (password: 비밀번호)
- 연결 후 화면 : GUI환경에서 DB생성, 테이블생성, 데이터 입력/조회 하면 됨.
4. MySQL 컨테이너 중지
4.1 GUI환경
- Kitematic 화면에서 STOP버튼 클릭 (참고 : 컨테이너의 X버튼은 컨테이너 삭제동작)
- 재시작
4.2 CLI쉘 환경
- docker 실행 쉘에서 stop명령으로 중단
$ docker stop 컨테이너이름 or 컨테이너ID
- 다시 시작하고 싶으면 위 '2-2'번부터 수행.
5. 한글 깨짐 현상 등 호환 환경 설정
5.1 위 설정 그대로 일 경우
- /etc/mysql/conf.d/mysql.cnf : 아래과 같이 설정,
- 확인은 show variable like 'c%' 혹은 status명령으로 캐릭터셋 설정 내역 확인 (utf8*로 되어있는지)
- db & table 새로 생성 or alter명령으로 캐릭터셋 설정 변경
ALTER DATABASE [DB명] DEFAULT CHRACTER SET utf8;
[mysql]
default-character-set=utf8
[client]
default-character-set=utf8
[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
5.2 컨테이너 실행시 옵션 설정
- https://hub.docker.com/_/mysql : Configuration without a cnf file 참고.
ex)
$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
'Docker' 카테고리의 다른 글
Docker PostgreSQL, pgAdmin4, SonarQube설치 및 연동 (0) | 2019.06.19 |
---|---|
Docker Toolbox 설치, 메모리 확장, 디스크 확장, timezone변경 (2) | 2019.06.18 |
Docker Sonatype Nexus 설치 (0) | 2019.06.18 |
Docker Jenkins Blue Ocean 설치 (0) | 2019.06.18 |
Windows10에서 Docker와 VMware 동시 사용 불가 해결 방법 (2) | 2019.06.17 |