Record
MySQL을 Docker로 Ubuntu 서버에 설치해보자. 본문
선행 조건 - Docker 설치
1. MySQL Docker Image 다운로드
# 가장 최근 버전 다운로드
sudo docker pull mysql:latest
# 특정 버전 다운로드
sudo docker pull mysql:5.7.34
암시적 볼륨 vs 명시적 볼륨?
도커에서는 암시적 볼륨과 명시적 볼륨이 존재.
암시적 볼륨의 경우 컨테이너가 삭제되면 같이 삭제되기 때문에 명시적으로 볼륨을 생성하여 마운팅하면 영구적으로 데이터를 보존할 수 있음.
그렇기 때문에 컨테이너의 내부 볼륨과 호스트의 볼륨을 마운팅 해주는 과정이 필요.
# volume 생성 docker volume create mysql-volume # volume 확인 docker volume ls # 생성한 volume을 container에 마운팅하여 실행 docker run -d --name mysql-container -p 3306:3306 -v mysql-volume:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=[패스워드] mysql:latest # -v : 호스트의 mysql-volume의 volume에 컨테이너의 /var/lib/mysql volume을 마운팅
2. 다운로드 된 Docker Image를 확인
sudo docker images
3. MySQL Docker Container 생성 & 실행
sudo docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=[패스워드] -d -p 3306:3306 mysql:5.7.34
# --name mysql-container : 실행될 컨테이너의 이름 정의
# -e MYSQL_ROOT_PASSWORD=[패스워드] : MySQL 컨테이너 내부 root 계정의 비밀번호 설정
# -d : 컨테이너를 백그라운드에서 실행
# -p 3306:3306 : 호스트의 3306 포트를 컨테이너의 3306 포트에 연결
4. Docker Container 리스트 확인
sudo docker ps -a
5. MySQL Docker Container 접속
sudo docker exec -it mysql-container bash
# 다른 컨테이너에 접속할 때도 위와 같이 명령어를 입력하면 됨
# sudo docker exec -it [Container명] bash
-bash $ mysql -u root -p
# password 입력
Test
root 계정으로 접속했으니, 새로운 user를 만들어보자.
# USER 생성, '%'는 모든 IP에서 접속 가능 mysql> CREATE USER test01@'%' identified by '1234'; # 생성한 USER에 모든 권한 부여 mysql> GRANT ALL PRIVILEGES ON *.* to test01@'%'; # 변경 사항 적용 mysql> FLUSH PRIVILEGES; mysql> exit; # 생성한 user로 MySQL 서버에 접속 $ mysql -u test01 -p Enter password: ... # 데이터베이스를 하나 생성해본다. mysql> CREATE DATABASE test; mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | | test | +--------------------+ 5 rows in set (0.00 sec)
6. 연결 Test
2가지 방법
- DBeaver, HeidSQL 과 같은 DBMS Tool 사용
- SpringBoot에서 설정한 후 테스트 (application.yml 안에 DB Connection 정보)
출처
'PJT > 특화 PJT' 카테고리의 다른 글
Jenkins를 Docker로 Ubuntu 서버에 설치해보자. - 1 (0) | 2023.09.18 |
---|---|
Ubuntu 서버에 Docker를 설치해보자. (0) | 2023.09.12 |
Comments