SY 개발일지
article thumbnail

서버도 만들었고, 도커도 설치했으니 이제 프로젝트에 필요한 요소들을 하나씩 설정해주도록 하겠습니다.

그래서 이번 포스팅에서는 도커에 MySQL 이미지를 올리고, 올린 DB를 MySQL 워크벤치와 연동해보도록 하겠습니다.🥰

 

MySQL Docker 이미지 설치

MySQL Docker 이미지 다운로드

  • 다음 명령어로 MySQL LTS 버전 Docker 이미지를 다운로드합니다.
docker pull mysql

 

다운로드한 이미지 확인

  • 다음 명령어로 다운로드한 Docker 이미지를 확인합니다.
docker images

 

MySQL Docker 컨테이너 생성

  • 다음 명령어로 컨테이너를 생성합니다.
  • 컨테이너 이름: --name 뒤에 컨테이너 이름을 입력합니다.
  • 비밀번호: <비밀번호 입력> 에서 비밀번호를 입력하는데 <  > 는 입력하지 않습니다.
  • MySQL의 특정 버전을 사용하고 싶다면 버전을 입력해줍니다.
docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=<비밀번호 입력> -d -p 3306:3306 mysql:latest

 

💡 명령어 참고:

  • --name: 생성할 컨테이너 이름
  • -e: 환경변수 (PASSWORD) 설정
  • -d: Dispatch mode (백그라운드에서 실행)
  • -p: 포트 (외부포트 : Docker 내부포트)
  • mysql: sql 버전
    --restart: 컨테이너가 내려가면 자동으로 다시 올려줌
  • MySQL 최신 버전이 아닌 경우, 기본 언어가 latin1로 설정되어 있을 수도 있습니다.
  • 필요 시, 다음 옵션을 위 명령어 뒤에 붙여서 입력합니다.(저는 붙여서 사용해주었습니다.)
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

💡 참고: 환경에 따라 컨테이너 종료 후 재접속 시, 설정이 매번 초기화되는 경우가 있는 것 같다.

 

생성된 MySQL Docker 컨테이너 확인

docker ps

💡 명령어 참고:

  • ps: 실행중인 컨테이너 리스트 보기
  • ps -a: 모든 컨테이너 리스트 보기

 

컨테이너 시작/종료/재시작

  • 컨테이너 시작
$ docker start mysql-container // "mysql-container" 대신 ID인 "f95ad85c7e02"로도 실행 가능
  • 컨테이너 종료
$ docker stop mysql-container
  • 컨테이너 재시작
$ docker restart mysql-container

 

 

MySQL 설정

MySQL 컨테이너 bash 쉘 접속

  • 다음 명령어에서 접속한 컨테이너 이름을 입력 후 MySQL에 로그인합니다.
  • 이후 root@{containerName}#으로 진입하게 됩니다.
  • docker로 돌아가고 싶으면 exit를 입력하면 됩니다.
docker exec -it mysql-container bash

💡 명령어 참고:

-it: Interactive Terminal Mode

 

Locale 설정

  • 다음 명령어를 입력하면 현재 환경의 locale 설정 정보를 볼 수 있습니다.
locale -a
  • 디폴트 환경에는 한국어 설정이 되어있지 않기 때문에 한국어 사용 예정이라면 바로 위 과정에서 다음 명령어를 입력합니다.

💡 참고: bash에 진입한 상태라면 exit를 입력하여 나올 수 있습니다.

  • 이후 locale 명령어로 다시 확인해보면 UTF-8이 적용된 것을 확인할 수 있습니다.
docker exec -it -e LC_ALL=C.UTF-8 mysql-container bash

 

MySQL 서버 접속

  • 다음 명령어를 사용하여 관리자로 서버에 접속합니다.
  • 접속하면 mysql>로 진입하게 됩니다.

💡 참고: 우분투에서 실행했다면 root@{containerName}# 형태로 뜨고, docker에서 진입하면 bash-숫자# 형태로 뜨는 것으로 추측됩니다.

bash-4.2# mysql -u root -p // # 뒤부터 입력해야 한다.
Enter password: // 비밀번호 입력
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.41 MySQL Community Server (GPL)

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> // mysql로 진입

 

MySQL 데이터베이스에 사용자 생성 및 권한 부여

  • 예시: hello라는 사용자를 생성하고, 모든 권한을 부여한다.

‼️ 주의: SQL 쿼리문을 작성하는 것이기 때문에, 맨 마지막에 ;를 꼭 입력해야합니다.

  • 사용자 생성
mysql> create user 'hello'@'localhost' identified by 'password';
Query OK, 0 rows affected (0.04 sec)

💡 : 컨테이너 외부에서 MySQL에 로그인이 필요할 시, localhost 대신 %를 입력합니다.

  • 생성한 유저에게 모든 DB 및 테이블 접근 권한 부여
mysql> grant all privileges on *.* to 'hello'@'localhost';
Query OK, 0 rows affected, 1 warning (0.01 sec)
  • 설정한 권한 적용
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

 

MySQL 종료

mysql> quit
Bye

 

 

이제 mysql 컨테이너도 생성했고, 사용자도 설정했으니 워크벤치와 연동해보도록 하겠습니다.

 

MySQL 워크벤치 연동

MySQL 설정

일단 워크벤치의 추가 버튼을 눌러줍니다.

 

✅ Connection Name은 앞에서 보여질 이름을 입력합니다.

  Hostname은 aws 인스턴스에서 퍼블릭 IPv4 주소를 입력하면 됩니다.

  비밀번호는 Password의 Store in Vault를 선택하여 위에서 지정한 MYSQL_ROOT_PASSWORD를 입력합니다.

 

그런데 왜 Test Connection을 누르면 실패할까요?

 

이를 해결하기 위해선 AWS의 보안그룹을 수정해야 합니다.

 

AWS 인스턴스 보안그룹 수정

먼저 인스턴스의 보안의 보안 그룹을 선택합니다.

 

그리고 인바운드 규칙 편집을 선택합니다.

 

규칙 추가를 선택하고, 유형을 MYSQL로 설정하면 포트와 IP가 자동으로 입력됩니다.

 

그런 후 규칙 저장을 눌러줍니다.

그리고 다시 Test Connection을 누르면 데이터베이스에 정상적으로 연결됩니다.

 

 

참고

 

Docker로 MySQL 설치하기(MySQL 5.7) - Mac M1

Docker 홈페이지에서 다운로드하여 설치한다. 설치 후 터미널에서 다음 명령어를 사용했을 때 버전이 출력되면 정상적으로 설치된 것이다.Homebrew를 통해서도 설치 가능하나 추가로 설정해야 할

velog.io

 

profile

SY 개발일지

@SY 키키

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!