맥 docker에 mysql 설치 & character set 설정 locale 설정

Kyu·2021년 1월 29일
5

mysql를 도커에 이미지 다운받는다

$ docker pull mysql:5.7
MYSQL_ALLOW_EMPTY_PASSWORD=true 라고하면 비번없이 생성
MYSQL_ROOT_PASSWORD=원하는 패스워드
--name mysql 라고하면 이미지? 이름 설정
mysql:5.7 버전 설정

도커 이미지들 확인

$ docker images

mysql 컨테이너 생성 및 실행

docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=원하는패스워드 --name 원하는이름 mysql:5.7
도커에 이미지 다운로드 안해도 이렇게 실행하면 자동으로 다운로드 받음.

한글안깨지게 character set 을 utf-8로 변경

--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
컨테이너 실행할때 뒤에 이 명령어를 같이 입력 해주면 된다.

그럼 다음과 같이 될것이다
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=원하는패스워드 --name 원하는이름 mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

docker-compose 파일 실행

위에 있는 긴 명령어를 기억하고 입력하는건 무리다.
위에있는 명령어를 파일도 만들어주고 실행해주면 편하다.
백그라운드로 실행시 -d만 붙여주면 된다
docker-compose up -d

# docker-compose.yml 예시

version: "3" # 파일 규격 버전
services: # 이 항목 밑에 실행하려는 컨테이너 들을 정의
  db: # 서비스 명
    image: mysql:5.7 # 사용할 이미지
    container_name: kyu # 컨테이너 이름 설정
    ports:
      - "3306:3306" # 접근 포트 설정 (컨테이너 외부:컨테이너 내부)
    environment: # -e 옵션
      MYSQL_ROOT_PASSWORD: "kyu"  # MYSQL 패스워드 설정 옵션
    command: # 명령어 실행
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci

docker-compose.yml을 만든 경로에서 실행하면 된다
docker-compose up -d

character set 설정 위에 방법이 안될시

# cat << 'EOF' > /etc/mysql/conf.d/utf8.cnf 를 먼저 입력

# for utf8 characterset 

[client]
default-character-set = utf8 

[mysqld] 
init_connect = SET collation_connection = utf8_general_ci 
init_connect = SET NAMES utf8
character-set-server = utf8 
collation-server = utf8_general_ci 

[mysqldump]
default-character-set = utf8 

[mysql]
default-character-set = utf8 
EOF

위에꺼 복사붙여넣기

리눅스 명령어인 cat 사용법

  • cat으로 입력하다가 그냥 빠져나오고 싶으면 ctrl + c
  • cat > : 파일출력
  • << 'EOF' >는 뭘까요? 나도 잘 모르겠네요

위에꺼 했는데도 안되면????ㅡㅡ

vi etc/mysql/my.cnf 실행
블라블라 영어로 무슨설명 밑에

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

라고 되어있는 파일이 실행되었다.

그 밑에 다음과 같은 코드를 추가해주면 된다

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8


[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8

도커 (mysql) 컨테이너 실행

$ docker exec -it 컨테이너이름 bash

mysql 서버 접속

# mysql -u root -p

사용자생성 & (컨테이너 내에서) mysql에서 권한부여

mysql> CREATE USER 'username'@'%' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON *.* TO 'username'@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> quit
Bye
  1. $ docker exec -it mysql고유번호 bin/bash; exit 터미널에 입력 고유번호?는 도커에서 실행한 mysql 의 CLI버튼 누르면 터미널열려지면서 docker exec -it 고유번호 /bin/sh; exit 라고 실행되어지는데 그거 복사해서 하면됨

locale

# locale 실행
LANGUAGE가 빈것을 확인가능

쓸 수 있는 locale 확인

root@f1017547b8dc:/# locale -a
C
C.UTF-8
POSIX

라고 나옴. C.UTF-8을 쓰면됨

mysql 시간설정

mysql> set global time_zone='Asia/Seoul';
mysql> set time_zone='Asia/Seoul';

mysql> select @@global.time_zone, @@session.time_zone;

참고

profile
TIL 남기는 공간입니다

0개의 댓글