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

Jinny·2023년 2월 26일
2

MySQL

목록 보기
1/2

⚙️ Docker로 MySQL 설치하기(MySQL 5.7)

✔️ 1. Docker 설치

설치 후 터미널에서 다음 명령어를 사용했을 때 버전이 출력되면 정상적으로 설치된 것이다.

$ docker -v
Docker version 20.10.22, build 3a2c30b

Homebrew를 통해서도 설치 가능하나 추가로 설정해야 할 것들이 있다고 한다.


✔️ 2. MySQL Docker 이미지 다운로드

  • 다음 명령어로 MySQL Docker 이미지를 다운로드한다.
  • 버전을 지정하지 않으면 최신 버전을 다운로드한다.
$ docker pull mysql:5.7

MySQL 버전은 docker hub 홈페이지에서 확인 가능하다.


M1일 경우, 다음과 같은 에러가 뜰 수 있는데
서버가 여러가지 버전 중 어떤 플랫폼의 버전을 가져올지 몰라서 뜨는 에러로 추측된다.

5.7: Pulling from library/mysql
no matching manifest for linux/arm64/v8 in the manifest list entries

에러를 해결하기 위해 기존 명령어에 platform 인자 옵션을 추가한다.

$ docker pull --platform linux/amd64 mysql:5.7
5.7: Pulling from library/mysql
e048d0a38742: Pull complete
c7847c8a41cb: Pull complete
351a550f260d: Pull complete
8ce196d9d34f: Pull complete
17febb6f2030: Pull complete
d4e426841fb4: Pull complete
fda41038b9f8: Pull complete
f47aac56b41b: Pull complete
a4a90c369737: Pull complete
97091252395b: Pull complete
84fac29d61e9: Pull complete
Digest: sha256:8cf035b14977b26f4a47d98e85949a7dd35e641f88fc24aa4b466b36beecf9d6
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7

✔️ 3. 다운로드한 이미지 확인

  • 다음 명령어로 다운로드한 Docker 이미지를 확인한다.
$ docker images
REPOSITORY          TAG       IMAGE ID       CREATED          SIZE
mysql               5.7       be16cf2d832a   2 weeks ago      455MB

✔️ 4. 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 버전
  • MySQL 최신 버전이 아닌 경우, 기본 언어가 latin1로 설정되어 있을 수도 있다.
  • 필요 시, 다음 옵션을 위 명령어 뒤에 붙여서 입력한다.
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

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


✔️ 5. 생성된 MySQL Docker 컨테이너 확인

$ docker ps
CONTAINER ID IMAGE      COMMAND                  CREATED         STATUS         PORTS                               NAMES
f95ad85c7e02 mysql:5.7  "docker-entrypoint.s…"   27 seconds ago  Up 26 seconds  0.0.0.0:3306->3306/tcp, 33060/tcp   mysql-container

💡 명령어 참고:

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

✔️ 6. 컨테이너 시작/종료/재시작

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

✔️ 7. MySQL 컨테이너 bash 쉘 접속

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

💡 명령어 참고:

  • -it: Interactive Terminal Mode

✔️ 8. Locale 설정

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

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

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

✔️ 9. 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로 진입

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

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

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

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

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

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

✔️ 11. MySQL 종료

mysql> quit
Bye

✔️ 12. MySQL에 데이터베이스 생성

MySQL에서 데이터베이스 생성하는 방법은 다음 글을 참고 하라.


profile
공부는 마라톤이다. 한꺼번에 많은 것을 하다 지치지 말고 조금씩, 꾸준히, 자주하자.

0개의 댓글