본문 바로가기

개발/Docker

[Docker] MySQL 컨테이너 생성 및 연결

MySQL 이미지 다운로드

$ docker pull mysql:8.0

컨테이너 생성

$ docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=<ROOT_PASSWORD> -e MYSQL_USER=<USER_NAME> -e MYSQL_PASSWORD=<USER_PASSWORD> -e MYSQL_DATABASE=<DATABASE_NAME> --name <CONTAINER_NAME> mysql

<ROOT_PASSWORD>: root 계정의 비밀번호
<USER_NAME>: 사용자 계정명. USER_NAME을 이름으로 하는 계정을 생성하고 모든 권한을 줌
<USER_PASSWORD>: 사용자 비밀번호
<DATABASE_NAME>: MySQL의 스키마명
<CONTAINER_NAME>: 컨테이너명

컨테이너 터미널 실행

$ docker exec -i -t <CONTAINER_NAME> bash

MySQL 캐릭터 셋 설정

$ cat << 'EOF' > /etc/mysql/conf.d/utf8.cnf 
[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
EOF 
  • utf8mb4: emoji 문자를 제공하는 charset

MySQL 상태 확인

$ mysql -u<USER_NAME> -p<USER_PASSWORD>

mysql> status

VirtualBox 사용 시 포트포워딩 설정 (외부에서 MySQL 연결시 10061 에러 발생 시 설정)

  1. VirtualBox 실행
  2. 도커가 실행되고 있는 virtual machine 선택
  3. 설정 -> 네트워크 -> 고급 -> 포트 포워딩 클릭
  4. 포트 포워딩 규칙 추가 (이름: mysql, 프로토콜: TCP, 호스트 IP: 127.0.0.1, 호스트 포트: 3306, 게스트 포트: 3306)

참고

docker-library/docs/mysql
MariaDB(MySQL)에서 UTF8MB4 설정
Docker for windows is not mapping ports to localhost