Record

MySQL을 Docker로 Ubuntu 서버에 설치해보자. 본문

PJT/특화 PJT

MySQL을 Docker로 Ubuntu 서버에 설치해보자.

윤프라이즈 2023. 9. 12. 10:31

선행 조건 - 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

Comments