linux
[Docker] mariadb 및 utf-8 설정
royleej9
2021. 3. 20. 23:03
https://hub.docker.com/_/mariadb
Docker - mariadb 설정
- mariadb 설치
- 볼륨 마운트
- 저장소 및 설정 폴더
- utf-8 설정
DB 설정 폴더 local로 복사
- 설정 파일 폴더 복사 용도
docker container run -d -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=pwd1234 \
--name mariadb.10.5.8 mariadb:10.5.8
// 볼륨 폴더 생성
// windows + ubuntu 등 멀티 부팅에서 함께 사용하는 공유 드라이브 경우 권한 변경이 되지 않음
// 로컬/docker-volume/mariadb
mkdir -p /home/r/docker-volume/mariadb/
// 컨터에이의 conf.d 폴더 -> local 로 복사
docker cp mariadb.10.5.8:/etc/mysql/conf.d /home/r/docker-volume/mariadb/conf.d
// 생성된 mariadb 컨테이너 중지 후 삭제
docker stop mariadb.10.5.8
docker rm mariadb.10.5.8
custom.cnf 수정 - utf-8 설정
// 위치 변경
cd /home/r/docker-volume/mariadb/conf.d
// 설정파일 생성 및 편집
vi custom.cnf
// windows 10 + wsl2 환경일 경우 권한 변경
chmod 444 *
# - file : custom.cnf
[mysqld]
skip-character-set-client-handshake
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
[client]
default-character-set = utf8
[mysql]
default-character-set = utf8
[mysqldump]
default-character-set = utf8
컨테이너 실행
utf-8이 설정된 파일과 db가 저장될 볼륨을 적용하여 컨테이너 실행
db 저장소 볼륨 폴더 생성
mkdir -p /home/r/docker-volume/mariadb/store
- local에서 작업한 설정파일이 있는 폴더를 컨테이너에 마운트
- /home/r/docker-volume/mariadb/conf.d -> /etc/mysql/conf.d
- local에서 생성한 db 저장 위치를 컨테이너에 마운트
- /home/r/docker-volume/mariadb/store -> /var/lib/mysql
docker container run -d -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=pwd1234 \
-v /home/r/docker-volume/mariadb/conf.d:/etc/mysql/conf.d \
-v /home/r/docker-volume/mariadb/store:/var/lib/mysql \
--name mariadb.10.5.8 mariadb:10.5.8
인코딩 적용 확인
// mariadb.10.5.8 컨테이너 접속
docker exec -it mariadb.10.5.8 bash
// db 접속
mysql -uroot -ppwd1234
// UTF-8 적용 전
show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
// UTF-8 적용 후
show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
기타
// windows 10 + wsl2 + ubuntu 환경에서 wsl 종료
wsl --shutdown