Docker로 Mysql 구축하기
Cloud 서비스의 DB가 요금이 많이나온다. 그래서 가벼운 프로젝트는 백엔드와 DB를 단일 서버로 사용하기 위해 DB 구축하는 과정을 기록해놓기로 했다. 아주 간단하게 사용할 수 있는 SQLite3
도 있지만 MySQL
로 구축!
MySQL 을 구축하는 방법에는 MySQL을 직접 설치하는 방법과 Docker image로 하는 방법이 있다.
컴퓨터에 이거저거 설치하는거 싫어해서 Docker로 진행.
Docker 로 MySQL 구축
개발 환경
- wsl2 Ubuntu 22.04
- wsl은 마이크로소프트 홈페이지에 있는 설치방법으로 진행
Docker 설치
- 이전 포스팅에서 확인 가능
- https://mintaewon.github.io/2023/01/ubuntu%EC%97%90-docker-docker-compose-%EC%84%A4%EC%B9%98/
MySQL 구축
- Docker hub 에가면 다양한 이미지를 찾을 수 있다.
- Docker hub 에서 MySQL 검색
- Tag에서 최신 버전, 원하는 버전 등을 찾을 수 있다.
- 가장 최신 버전으로 설치!
- 터미널에 복붙!
- docker images 로 이미지 확인
- MySQL 컨테이너 생성
- 가장 혼란스러웠던 저장공간 설정..
- Volume과 Bind Mount 가 있는데 다음 유튜브에 설명이 아주 잘 나와있다.
- https://youtu.be/-pzptvcJNh0
docker run
# 컨테이너 이름 지정
--name test-mysql
# MySQL root 계정 비밀번호 지정
-e MYSQL_ROOT_PASSWORD=1234
# 백그라운드로 실행
-d
# 포트포워딩, 호스트:컨테이너
-p 3306:3306
# 바인드 마운트, 호스트:컨테이너
-v /home/docker/gymdata/:/var/lib/mysql/
# 도커 이미지 ID
mysql:latest
- /home/docker/gymdata 에 가면 공간이 생성된 것을 확인할 수 있다.
- 컨테이너 접속 후 MySQL 사용 확인
docker exec -it test-mysql bash
- MySQL 접속
mysql -u root -p
- 사용자 계정 생성
# 계정 생성
CREATE USER 'name'@'%' IDENTIFIED BY 'password';
# 권한 부여
GRANT ALL PRIVILEGES ON *.* TO 'name'@'%';
# 권한 적용
FLUSH PRIVILEGES;
-
데이터베이스를 생성하고 사용하면 된다.
-
외부에서 접속하는 방법은 포트를 열어주면 되는데 GCP의 경우 방화벽에서 설정한 3306 포트를 열어주면 접속이 된다.