티스토리 뷰
DB가 필요해...
이직을 하기 전에는, 사내 DB를 개인용 프로젝트에 써먹었었다. 이직이 결정된 이후에 인프라를 만지작 거리려니까 DB가 문제가 됐다.
어떻게 써야할까 고민하다가 그냥 인프라 구축을 위해 띄워놓은 EC2에 MySQL 서버를 띄우기로 했다.
아쉬운 점은, 난 그동안 오라클만 써왔다는 것이다. 하지만 오라클은 유료라 과감히 버린다.
(Oracle 이미지는 Docker Hub에서도 내려버렸다...)
AWS EC2 / Docker 설정 및 설치
멈춰버린 인프라 관련 글에 잘 써놨다.
MySQL Docker 설치
Docker Hub에 저장된 공식 이미지를 사용하면, 별도의 설치파일 없이 편하게 사용할 수 있다.
docker pull mysql:latest
설치 후 아래와 같이 뜨면 정상적으로 설치됨!
MySQL Volume Mount 후 Docker 실행
도커에서는 컨테이너가 삭제되면 도커에 할당된 볼륨(메모리)도 함께 삭제된다.
때문에, MySQL용 볼륨을 따로 Docker에 할당 해주고, 마운팅을 해주면 영구적으로 데이터를 보존할 수 있다.
우선 Docker Volume을 할당 받는다.
docker volume create mysql-volume
아래의 명령어로 할당 받은 볼륨 확인!
docker volume ls
DRIVER VOLUME NAME
local mysql-volume
할당 받은 Volume을 mount 하여 dokcer를 run 해준다.
docker run -d --name mysql-container -p 3306:3306 -v mysql-volume:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=1234 mysql:latest
root 계정의 비밀번호를 1234로 설정했다.
볼륨은 /var/lib/mysql 경로 아래에 docker volume으로 할당받은 mysql-volume이 저장되도록 지정했다.
PORT는 3306이 MySQL의 기본 포트이므로 외부에서 EC2에 접근 할 수 있도록 보안 그룹에 3306 포트를 열어줬다.
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0db65b68ed80 mysql:latest "docker-entrypoint.s…" 24 hours ago Up 24 hours 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql-container
위와 같이 뜨면 정상적으로 실행된 것이다.
별도의 사용자 설정과 테이블 생성은 DBeaver에서 설정하고 사용했다.
DBeaver에서 DB 접근하기
자, DB를 띄웠으니 외부에서 접근할 수 있어야한다.
위와 같이 새 DB를 연결하려고 하기 위해 Test Connection을 누르면,
위와 같은 에러가 발생한다.
이 문제는, 오래된 버전의 MySQL Connector/J 드라이버를 사용하여 외부 클라이언트에서 MySQL 서버에 연결을 시도할 때 발생한다.
MySQL 버전 8.0.19 이상에서 "allowPublicKeyRetrieval" 옵션의 기본값이 "false"로 변경되었기 때문인데, 이 옵션을 "true" 변경해주면 된다.
Driver properties를 클릭하고, 아래 옵션을 찾아서 true로 변경해 주면 된다.
allowPublicKeyRetrieval=true
연결 완료!
'개발 > 인프라' 카테고리의 다른 글
github action으로 CI/CD 구축하기 - 1. CI (0) | 2023.11.06 |
---|---|
AWS EC2에서 Jenkins 자동배포 구축하기(2) (2) | 2023.05.08 |
Harbor의 리버스 프록시 문제... (1) | 2023.03.15 |
Harbor : Private Container Registry 설치하기 (1) | 2023.03.15 |
AWS EC2에서 Jenkins 자동배포 구축하기 (1) (1) | 2023.01.26 |
- Total
- Today
- Yesterday
- GIT
- JWT
- MySQL
- terraform
- 스프링부트
- OpenFeign
- EKS
- OpenAI
- Spring
- cache
- 람다
- AOP
- 티스토리챌린지
- 후쿠오카
- AWS EC2
- CloudFront
- 오블완
- S3
- Kotlin
- Elastic cloud
- openAI API
- elasticsearch
- springboot
- Log
- docker
- lambda
- java
- AWS
- ChatGPT
- serverless
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |