# 1. Docker 설치
- https://www.docker.com/get-started/에서 OS 및 환경에 맞는 Docker Desktop을 설치한다.
- 설치 후, Docker를 실행하면 고래선 모양의 아이콘이 생긴다.
Docker를 실행하지 않고 Docker기능을 사용하려하면
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
의 에러메시지를 만나므로, 반드시 실행해준다.
설치가 완료된 후에 다음 명령어를 실행하여 버전을 출력해보자.
docker -v
Docker version 20.10.8, build 3967b7d
# 2 . MySQL Docker 이미지 다운로드
docker pull mysql 명령어를 사용하면 MySQL Docker 이미지를 다운로드 받을 수 있다.
태그에 버전을 설정하지 않으면 default로 최신버전(latest)을 받는다.
MySQL 버전을 지정하려면 tag에 버전을 지정해준다. 지원하는 MySQL 버전은 https://hub.docker.com/_/mysql/?tab=tags
페이지에서 확인할 수 있다.
예를들어 MySQL 8.1.2 버전을 다운로드 하려면 다음과 같이 입력하면 된다.
docker pull mysql:8.1.2
## 다음 명령어로 다운로드한 Docker 이미지를 확인할 수 있다.
# 3. MySQL Docker 컨테이너 생성 및 실행
- 호스트의 /Users/{내계정}/datadir 디렉토리를 컨테이너의 /var/lib/mysql 디렉토리로 마운트
- docker에 mysql과 같은 DB를 설치하는 경우 컨테이너 삭제와 함께 데이터도 날라가므로, 저장소는 반드시 외부 저장소를 사용한다.
ex) -v /Users/jmlim/datadir:/var/lib/mysql
현재 3306 포트를 사용중이므로 3307 포트를 이용하겠다.
docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=<PASSWORD> -d -p 3307:3307 mysql:latest
터미널을 이용하면 위와 같은 명령어로 컨테이너를 올릴 수 있다.
하지만 아래와 같이 docker-compose.yml 파일을 만들어 실행하면
장황한 도커 옵션을 한 눈에 볼 수 있어 편리하다.
1 ) docker-compose.yml 파일 생성.
version: "3" # 파일 규격 버전
services: # 이 항목 밑에 실행하려는 컨테이너 들을 정의
db: # 서비스 명
image: mysql:latest # 사용할 이미지
container_name: mysql-container # 컨테이너 이름 설정
ports:
- "3307:3307" # 접근 포트 설정 (컨테이너 외부:컨테이너 내부)
environment: # -e 옵션
MYSQL_ROOT_PASSWORD: "password" # MYSQL 패스워드 설정 옵션
command: # 명령어 실행
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci # 한글이 깨지지 않도록 설정하는 인자값
volumes:
- /Users/choichangho/datadir:/var/lib/mysql # -v 옵션 (다렉토리 마운트 설정)
2 )docker-compose.yml 파일 실행.
- docker-compose.yml 작성한 위치에서 실행
- 백그라운드로 실행 시 옵션 -d 붙이면 됨.
- 자세한건 옵션 참고
docker-compose up -d
# 4. Docker 컨테이너 목록 출력
docker ps -a
# 5. MySQL Docker 컨테이너 시작/ 중지/ 재시작
# MySQL Docker 컨테이너 중지
$ docker stop mysql-container
# MySQL Docker 컨테이너 시작
$ docker start mysql-container
# MySQL Docker 컨테이너 재시작
$ docker restart mysql-container
# 6. MySQL 서버 접속
로컬에서 mysql를 설치하고 접속하는 방법과 동일.
패스워드는 MySQL 컨테이너를 실행할 때 지정한 정보를 입력한다.
$ docker exec -it mysql-container bash
root@f3af78fa6428:/#mysql -u root -p
mysql>
위의 화면이 나오면 MySQL 서버 접속에 성공했다.
# 7. 데이터베이스와 사용자를 생성하고 (컨테이너 내에서) MySQL에서 권한을 부여한다.
- changho 라는 사용자를 생성하고, 모든 권한을 부여한다.
- 변경된 권한 적용
중요 : 컨테이너 외부에서 MySQL에 로그인도 가능해야 하므로 changho@localhost에서 localhost 대신 %를 사용한다.
mysql> CREATE USER 'changho'@'%' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'changho'@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> quit
🛵 MySQL 기본 사용법
다른 토이 프로젝트를 진행했던 data를 끌고와서 db를 조회 해보자
✓Database 목록 조회하기
show databases;
✔️Database 사용하기
use {database_name};
✔️Database 의 table 목록 조회하기
show tables;
✔️table의 describe 보기
desc {table_name};
desc {table_name}\G;
\G 옵션을 뒤에 붙이면 상세한 결과값을 볼 수 있따.
가끔 \G 옵션을 넣지 않아 한 열에 모든 내용을 다 출력해버린다면 쿼리문 결과를 확인하기 불편하기 때문에 많이 사용되는 옵션이다.
✔️table의 쿼리 확인(조회)하기
table의 create 쿼리를 확인하는 경우,
\G 옵션을 이용하면 결과값을 훨씬 보기 편하게 출력할 수 있다.
show create table {table_name}\G;
✔️table column 조회하기
테이블의 내용들을 조회하고 싶다면 select 문을 이용하자
select * from {table_name};
✔️MySQL 종료
exit와 quit 명령어 모두 MySQL을 종료할 수 있다.
Docker MySQL 해당 컨테이너를 아예 종료하고 싶다면? exit 명령어를 통해 종료할 수 있다.
'IT 지식' 카테고리의 다른 글
[Docker] Docker-Compose 매커니즘 이해하기 (0) | 2022.12.02 |
---|---|
[Docker] docker-compose 설치하기 (0) | 2022.12.01 |
MVC 웹 프레임워크란? (1) | 2022.12.01 |
[Docker] Docker란 무엇인가? (0) | 2022.11.30 |
데이터란? (0) | 2021.10.25 |