티스토리 뷰
목차
M1 용으로 도커를 다시 설치하게 되어, 기존 컨테이너들이 사라지게되어 MySQL을 다시 설치하게 되었습니다.
MySQL을 설치하고 한글 인코딩 설정하는 방법을 알아보도록 하겠습니다.
1. MySQL 이미지 다운로드 및 컨테이너 실행
docker pull을 해보면 에러가 발생합니다. --platform 으로 플랫폼을 명시해주면 정상적으로 mysql 이미지를 받을 수 있습니다.
➜ ~ docker pull mysql:8.0.28
8.0.28: Pulling from library/mysql
no matching manifest for linux/arm64/v8 in the manifest list entries
➜ ~ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
➜ ~ docker pull --platform linux/amd64 mysql:8.0.28
MySQL 컨테이너를 생성&실행 할 때도 플랫폼을 명시해줍니다.
➜ ~ docker run --platform linux/amd64 --name mysql -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234 mysql:8.0.28
2. MySQL 한글 설정
아래와 같이 컨테이너의 bash를 수행해 mysql에 접속하여 database를 만듭니다.
➜ ~ docker exec -it mysql bash
➜ ~ mysql -uroot -p1234
mysql> CREATE DATABASE testdb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
한글 데이터를 넣고 확인해보면, ???? 로 데이터가 표시되는 것을 확인할 수 있습니다.
character_set을 확인해보면, latin1 값으로 되어 있습니다.
이걸 utf8로 변경해줘야 한글 데이터가 정상적으로 표현이 됩니다.
mysql> show variables like 'c%';
+----------------------------------------------+--------------------------------+
| Variable_name | Value |
+----------------------------------------------+--------------------------------+
| caching_sha2_password_auto_generate_rsa_keys | ON |
| caching_sha2_password_digest_rounds | 5000 |
| caching_sha2_password_private_key_path | private_key.pem |
| caching_sha2_password_public_key_path | public_key.pem |
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8mb3 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | utf8mb4 |
| character_set_system | utf8mb3 |
| character_sets_dir | /usr/share/mysql-8.0/charsets/ |
| check_proxy_users | OFF |
| collation_connection | latin1_swedish_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8mb4_0900_ai_ci |
| completion_type | NO_CHAIN |
| concurrent_insert | AUTO |
| connect_timeout | 10 |
| connection_memory_chunk_size | 8912 |
| connection_memory_limit | 18446744073709551615 |
| core_file | OFF |
| create_admin_listener_thread | OFF |
| cte_max_recursion_depth | 1000 |
+----------------------------------------------+--------------------------------+
아래와 같이 my.cnf 파일을 열어줍니다.( vi가 설치되어 있지 않은 경우에는, 컨테이너 vi설치 글을 참조하여 설치합니다. )
$ docker exec -it mariadb bash
root@74c163276af6:/# cd /etc/mysql
root@74c163276af6:/etc/mysql# vi my.cnf
my.cnf에서 아래 내용을 추가하여 저장합니다.
[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
[mysql]
default-character-set = utf8
다시 인코딩 정보를 확인해보면, latin1으로 되어있던 것들이 utf8로 변경된 것을 확인할 수 있습니다.
mysql> show variables like 'c%';
+----------------------------------------------+--------------------------------+
| Variable_name | Value |
+----------------------------------------------+--------------------------------+
| caching_sha2_password_auto_generate_rsa_keys | ON |
| caching_sha2_password_digest_rounds | 5000 |
| caching_sha2_password_private_key_path | private_key.pem |
| caching_sha2_password_public_key_path | public_key.pem |
| character_set_client | utf8mb3 |
| character_set_connection | utf8mb3 |
| character_set_database | utf8mb3 |
| character_set_filesystem | binary |
| character_set_results | utf8mb3 |
| character_set_server | utf8mb3 |
| character_set_system | utf8mb3 |
| character_sets_dir | /usr/share/mysql-8.0/charsets/ |
| check_proxy_users | OFF |
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
| completion_type | NO_CHAIN |
| concurrent_insert | AUTO |
| connect_timeout | 10 |
| connection_memory_chunk_size | 8912 |
| connection_memory_limit | 18446744073709551615 |
| core_file | OFF |
| create_admin_listener_thread | OFF |
| cte_max_recursion_depth | 1000 |
+----------------------------------------------+--------------------------------+
이제 MySQL 컨테이너를 재시작하고 데이터를 조회하면 한글이 정상적으로 나오는 것을 확인 할 수 있습니다.
docker stop mariadb
docker start mariadb
'Database' 카테고리의 다른 글
SQL WHERE의 AND, OR 우선 순위 (0) | 2021.10.01 |
---|---|
Mac에서 Docker MariaDB 설치 및 한글설정 (1) | 2021.09.09 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- docker
- Index
- scala
- Size
- Linux
- tomcat
- maven
- logstash
- Container
- JSON
- apm
- Kibana
- Spark
- intellij
- Postman
- Filter
- spring boot
- Git
- AWS
- SpringBoot
- Java
- mac
- error
- gradle
- spring
- JPA
- install
- Log
- elasticsearch
- plugin
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함