$ docker pull mysql:5.7
MYSQL_ALLOW_EMPTY_PASSWORD=true 라고하면 비번없이 생성
MYSQL_ROOT_PASSWORD=원하는 패스워드
--name mysql 라고하면 이미지? 이름 설정
mysql:5.7 버전 설정
$ docker images
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=원하는패스워드 --name 원하는이름 mysql:5.7
도커에 이미지 다운로드 안해도 이렇게 실행하면 자동으로 다운로드 받음.
--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
위에 있는 긴 명령어를 기억하고 입력하는건 무리다.
위에있는 명령어를 파일도 만들어주고 실행해주면 편하다.
백그라운드로 실행시 -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
# 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 >
: 파일출력<< '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
$ docker exec -it 컨테이너이름 bash
# mysql -u root -p
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
$ docker exec -it mysql고유번호 bin/bash; exit
터미널에 입력 고유번호?는 도커에서 실행한 mysql 의 CLI버튼 누르면 터미널열려지면서 docker exec -it 고유번호 /bin/sh; exit
라고 실행되어지는데 그거 복사해서 하면됨# locale
실행
LANGUAGE가 빈것을 확인가능
root@f1017547b8dc:/# locale -a
C
C.UTF-8
POSIX
라고 나옴. C.UTF-8을 쓰면됨
mysql> set global time_zone='Asia/Seoul';
mysql> set time_zone='Asia/Seoul';
mysql> select @@global.time_zone, @@session.time_zone;