References

yml 파일 작성

# 파일 규격 버전
version: "3.9"

# 이 항목 밑에 실행하려는 컨테이너 정의
services:

  # 서비스명
  db:

    # 사용할 이미지
    image: mysql:8.0

    # 컨테이너 이름 설정
    container_name: mysql-local

    # 접근 포트 설정 (컨테이너 외부:컨테이너 내부)
    ports:
      - "3306:3306"

    # -e 옵션
    environment:

      # MYSQL 기본 옵션(DB명, 루트 비밀번호)
      MYSQL_DATABASE: mysqllocal
      MYSQL_ROOT_PASSWORD: 1234

      # MYSQL 계정 추가 옵션
      MYSQL_USER: rito
      MYSQL_PASSWORD: 1234

    # 명령어 실행 (한글 인코딩 관련)
    command:
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci

    volumes:
      # -v 옵션 (디렉토리 마운트 설정)
      - ~/docker-volumes/mysql-local:/var/lib/mysql

해당 yml 파일 위치에서 명령어 실행

docker compose up -d

컨테이너 bash 접속

docker exec -it mysql-local /bin/bash

Docker-compose 명령어들

docker compose up      # 복합 컨테이너 생성, 실행 및 해당 CLI에서 로그 확인
docker compose up -d   # 복합 컨테이너 생성, 실행(백그라운드)
docker compose start   # 실행
docker compose stop    # 종료
docker compose down    # 제거
docker compose restart # 재시작
docker compose ps      # 컨테이너 목록, 상태 확인

MySQL Bash 명령어

mysql -u root -p    # root 데이터베이스로 접근(이후, 비밀번호 입력 필요)

# 사용자 생성
CREATE USER 'rito'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'rito'@'%';
flush privileges;
quit

# 유저 목록 조회
SELECT user FROM mysql.user;

# 현재 접속한 유저 조회
SELECT current_user();

# DB(스키마) 목록 조회 : DB와 스키마는 같다
SHOW DATABASES;
SHOW SCHEMAS;

# 특정 DB 사용
USE {DB명};

# 현재 접속 데이터베이스 조회
SELECT DATABASE();

# 테이블 목록 조회
SHOW TABLES;