우노
[Docker] Docker를 이용한 MySQL 설치 및 접속 본문
- 이 글에선 docker를 이용한 MySQL 설치 및 접속 방법에 대해 알아볼 것이다.
- Docker가 설치되는 환경은 EC2 라고 가정한다.
docker 설치
sudo yum update -y
sudo yum install docker -y
sudo service docker start
sudo usermod -a -G docker ec2-user
# 재접속
MySQL 이미지 다운
# 최신버전의 MySQL 이미지 다운로드
docker pull mysql
# 가져온 이미지 확인
docker images
MySQL 이미지를 사용해 컨테이너 생성
# mysql container DB를 저장할 저장소
mkdir mysqldata
# MySQL 이미지를 사용해 컨테이너 생성
docker run -d -p 3306:3306 --name mysql-container -e MYSQL_ROOT_PASSWORD=1234 -v ~/mysqldata/:/var/lib/mysql mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
# 컨테이너 생성 확인
docker ps
- -d
- 백그라운드모드로 실행
- -p 3306:3306
- host의 3306 포트를 container의 3306 포트로 매핑한다는 뜻이다.
- --name mysql-container
- 컨테이너 이름을 지정한다.
- -e MYSQL_ROOT_PASSWORD=1234
- root 비밀번호를 생성한다.
- mysql 컨테이너 내부에서 mysql에 접속할 때 사용된다.
- 이 단계는 필수이므로 요구 조건을 만족하는 비밀번호를 입력 할 수 있도록 한다.
- -v ~/mysqldata/:/var/lib/mysql
- 호스트의 ~/mysqldata/ 디렉토리를 컨테이너의 /var/lib/mysql 디렉토리로 마운트
- docker에 mysql과 같은 DB를 설치하는 경우, 컨테이너 삭제와 함께 데이터도 날라가므로, 저장소는 반드시 외부 저장소를 사용한다.
- --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
- 위 명령어 없이 실행한다면 mysql db를 생성하여 개발 시 한글문제가 발생 할 것이다.
- 한글이 깨지지 않도록 설정하려면 위 인자값을 넣어주어야 한다.
MySQL 컨테이너 접속
# MySQL 컨테이너 생성이 정상적으로 완료 되었다면, Container에 접속한다.
docker exec -it mysql-container bash
# Container 콘솔에 접근되었으면 MySQL에 접속을 하여 정상적으로 실행되고 있는지 확인한다.
# password는 mysql container 생성 시 옵션으로 주었던 password를 입력하면 된다.
mysql -u root -p
외부에서 MySQL에 접근할 수 있도록, MySQL 컨테이너 내부에 사용자 생성 후 접근 권한 부여
# 테스트를 위한 database 추가
create database testdatabase;
# 추가 된 database 확인
show databases;
# 이름 : testuser , password : "5678"인 user를 생성해줍니다.
CREATE USER 'testuser'@'%' IDENTIFIED BY '5678';
# 외부에서 접속 할 수 있도록 권한을 부여하도록 합니다.
GRANT ALL PRIVILEGES ON *.* TO 'testuser'@'%';
# 변경된 권한을 적용합니다.
flush privileges;
quit
EC2 인바운드 규칙 수정
- 인스턴스 인바운드 규칙을 수정하여 외부 → 인스턴스 → MySQL 컨테이너로 접속할 수 있도록 합니다.
- 인스턴스 선택 → 보안 → 보안 그룹 → 인바운드 규칙 편집 → 규칙 추가 → 규칙 저장
- 유형 : 사용자 지정 TCP
- 포트 : 3306
- 소스 : 위치 무관
외부에서 MySQL 컨테이너에 접근해보기
로컬에서 EC2 MySQL 컨테이너에 접근해보기
cd /usr/local/mysql/bin ./mysql -h 13.230.162.204 -u testuser -p # 이전에 생성한 database 확인해보기 show databases;
MySQL Workbench를 사용한다면, Manager Connections에 Hostname, Port 를 설정하여 접근할 수 있다.
'DevOps > Docker' 카테고리의 다른 글
[Docker] Docker 를 이용한 Jupyter Notebook 사용 (0) | 2021.07.17 |
---|---|
[Docker] MySQL Container 실행 시 host db 볼륨 마운팅하기 (0) | 2020.11.18 |
[Docker] Dockerfile 개념 및 작성법 (1) | 2020.10.06 |
[Docker] AWS EC2에서 Docker를 이용한 Nodejs 웹서버 구축 (0) | 2020.10.04 |
[Docker] AWS EC2에서 Docker를 이용한 Apache 웹서버 구축 (2) | 2020.10.03 |
Comments