티스토리 뷰
728x90
반응형
이번에는 docker에서 mysql을 설정하는 방법을 알아보겠습니다.
Docker 설치
# 1.yum 패키지 업데이트 업그레이드 vi 설치
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install vim
# 2.Docker & Docker Registry 설치
sudo curl -s https://get.docker.com/ | sudo sh
# 3.docker start
sudo service docker start
# 4.ec2-user 계정에 docker 실행 권한을 부여합니다.
sudo usermod -a -G docker $USER
Docker 버전 확인
docker --version
Mysql Docker 이미지 다운로드
- -아래 명령어를 통해 MySQL 8.0.28 태그 이미지를 다운로드한다.
태그에는 MySQL 버전을 명시하며. 만약 태그에 버전을 명시하지 않으면, 최신 버전인 latest를 가져옵니다.
docker pull mysql:8.0.28
Mysql Docker 이미지 다운로드시 실행 권한이 없어 오류가 발생하는 경우
- docker group에 해당 유저를 추가해줘야합니다.
- 보통 docker group이 생겼을거지만 sudo groupadd docker 명령어를 통해 한번 더 확인을 해줍니다.
- sudo usermod -aG docker $USER 명령어를 입력하여 해당 유저를 추가해줍니다.
- newgrp docker 명령어를 입력하여 적용이 완료됩니다. 또는 로그아웃 후 다시 로그인해도 됩니다.
Docker 이미지 확인
docker images
Docker Mysql 컨테이너 생성 및 실행
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=12345 --name mysql-container -v /home/mysql/:/var/lib/mysql mysql:8.0.28 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-allowed-packet=1073741824
- -d : 백그라운드에서 실행
- -p : 3306:3306 한것은 포트 포워딩, 실제 내 서버로 들어온 3306 포트는 도커의 3306 포트로 보내겠다는 의미
- -e : mysql을 도커로 실행할 때 반드시 있어야 하는 옵션 중 하나, root 의 패스워드를 지정
- --name : 컨테이너의 이름을 설정, 이 부분을 설정하지 않는다면 랜덤하게 설정됨
- -v : 내 서버와 mysql 서버의 특정 폴더를 공유하겠다는 의미인데, 이 부분이 필요한 이유는 db 데이터를 컨테이너가 삭제되어도 보존하기 위해서 설정하는 것
- mysql:8.0.28 : docker images 했을 경우 repository와 tag명
- --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci : 한글 출력을 위한 인코딩
Docker 컨테이너 목록 출력
docker ps -a
Mysql 컨테이너 bash shell 접속
- docker exec 명령을 사용하여 docker 컨테이너에 접근한 다음 MySQL에 로그인합니다.
docker exec -it mysql-container bash
Mysql 서버 접속
- MYSQL_ROOT_PASSWORD ={비밀번호}
외부에서 Mysql에 접근할 수 있도록 Mysql 컨테이너 내부에 사용자 생성 후 권한 부여
# 테스트를 위한 데이터 베이스 생성
create database sasu;
# 생성한 데이터 베이스 조회
show databases;
# 이름 : kdg , password : "12345"인 user를 생성해줍니다
CREATE USER 'kdg'@'%' IDENTIFIED BY '12345';
# 외부에서 접속 할 수 있도록 권한을 부여하도록 합니다.
GRANT ALL PRIVILEGES ON *.* TO 'kdg'@'%';
# 변경된 권한을 적용합니다.
flush privileges;
Aws Ec2 보안 그룹 인바운드 설정
- 인바운드란 EC2 인스턴스로 들어오는 트래픽에 대한 규칙입니다. 쉽게 설명하면 특정 프로토콜, 포트를 탑재한 차량이 시내로 접근할 수 있도록하는 보안 장치에 대한 설명입니다.
- 3306 포트를 열어줍니다.
인스턴스 ping 테스트
- Aws Ec2의 인스턴스의 탄련적 아이피 및 퍼블릭 IPv4의 주소를 입력하면 됩니다.
- ex) ping 123.12.56.123
Mysql 접속
- 현재는 ssh가 아닌 기본 tcp로 접속가능하기 때문에 tcp로 설정합니다
- Server Host는 탄력적 아이피의 주소 또는 퍼블릭 IPv4의 주소를 입력하면 됩니다.
- username은 위에서 만든 유저명과 해당 비밀번호를 입력하면 됩니다.
728x90
반응형
'CI&CD' 카테고리의 다른 글
React Nginx Docker 최적화 이미지 빌드 (2) | 2022.03.10 |
---|---|
Docker - 이미지란 (0) | 2022.03.09 |
React & Docker & Jenkins CI&CD 배포 방법 (0) | 2022.03.08 |
Docker - Docker 기본 명령어 (0) | 2022.03.05 |
Docker & Jenkins & Spring boot & Gradle CI&CD 배포 방법 (2) | 2022.02.27 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- space based architecture
- spring boot redisson sorted set
- spring boot excel download oom
- polling publisher spring boot
- java ThreadLocal
- 서비스 기반 아키텍처
- redis sorted set으로 대기열 구현
- 공간 기반 아키텍처
- transactional outbox pattern
- 레이어드 아키텍처란
- 람다 표현식
- @ControllerAdvice
- pipeline architecture
- spring boot redisson 분산락 구현
- pipe and filter architecture
- java userThread와 DaemonThread
- spring boot redis 대기열 구현
- redis sorted set
- JDK Dynamic Proxy와 CGLIB의 차이
- spring boot excel download paging
- transactional outbox pattern spring boot
- redis 대기열 구현
- 자바 백엔드 개발자 추천 도서
- 트랜잭셔널 아웃박스 패턴 스프링 부트 예제
- service based architecture
- spring boot poi excel download
- microkernel architecture
- 트랜잭셔널 아웃박스 패턴 스프링부트
- spring boot redisson destributed lock
- spring boot 엑셀 다운로드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함