[Ubuntu, Docker] MariaDB 10.1 한글 입력이 되지 않을 때 Computer Tip

최근에 Docker를 가지고 놀면서 느끼는 것인데,
아주 오래 전 (사회에 나와서 개발에 몸 담아 온지 어언 27년째) 부터 해 왔던 시행착오를
그대로 답습한다고 생각이 들고는 합니다.

따라서 아주 오래전이라도 이미 경험했다면 쉽게 기억을 되살려 할 수 있는 것들도
지금과 같은 GUI 위주의 개발 환경에 익숙한 개발자라면 하나 하나 접근해 가기가
쉽지 않을 수도 있다는 생각이 듭니다.

예를 들면,
- Docker에는 UI가 없으므로 대부분 터미널 작업을 해야 합니다.
- 쉘 명령과 터미널 편집기 (vi 등)에 익숙해야 합니다.
- Docker는 하면 할 수록 환경변수에 많이 의존한다는 느낌입니다.
- 심지어는 파이썬도 pudb와 같은 터미널 디버거가 필요할 수 있습니다.
  (해당 블로그 내용 참조)
- 작은 컨테이너 이미지를 위하여 alpine 리눅스 기반의 이미지로부터 파생한 경우
  busybox 등의 작은 쉘 환경 및 apk 라는 패키지 시스템을 이해하고 적용할 수 있어야 합니다.
  (대부분의 경우 subset 이라 생각하시면 됩니다)


암튼 아주 오래전에 겪어던 문제를 다시 접하게 되었습니다.

우선 거의 모든 버전에 상관없이 
MySQL 및 MariaDB 에서 한글이 안되는 경우의 해결책은
다음과 유사합니다.
(해당 블로그를 참고하였습니다)

위의 그림과 같이

show variables like 'c%';

이라고 SQL 명령을 내리면 위와 같이 latin1 이 포함되어 나타납니다.
이러면 UTF8 한글이 제대로 들어가지 않을 수 있습니다.

이 때의 해결 방법으로는 다음과 같이 진행합니다.

(만약 기존에 테이블이 UTF8이 아닌 다른 로케일로 이미 생성된 경우
 UTF8로 바꾸는 방법은 여기에서 언급하지 않고 새로 DB가 생성된다고
 가정합니다)

/etc/mysql/my.cnf 설정파일에서

[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을 동작시키고, 위와 같은 결과를 확인해 보면,

위와 같이 모두 UTF8 로 바뀌어져 있음을 알 수 있고,
이제 한글 입출력이 모두 잘 되었습니다.

참고로,

이를 위하여 mariadb:10.1을 BASE로 하여 그 위에 한글이 도는 Docker Container 용 
Docker 파일은 다음과 같았습니다.


FROM mariadb:10.1
MAINTAINER MoonChang Chae mcchae@gmail.com
LABEL MicroService="IMO.Store.MariaDB" Description="IMO.Store.MariaDB service"

# 1) setup for ko_KR.UTF-8 locale
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y locales
RUN sed -i -e 's/# ko_KR.UTF-8 UTF-8/ko_KR.UTF-8 UTF-8/' /etc/locale.gen && \
    echo 'LANG="ko_KR.UTF-8"'>/etc/default/locale && \
    dpkg-reconfigure --frontend=noninteractive locales && \
    update-locale LANG=ko_KR.UTF-8
ENV LANG ko_KR.UTF-8 

# 2) overwrite my.cnf
ADD my.cnf /etc/mysql

# 3) run CMD mysqld
CMD ["mysqld"]


어느분께는 도움이 되셨기를...


덧글

  • JULICE KIM 2017/11/04 12:38 # 삭제 답글

    참고 정보 감사합니다.
  • 지훈현서아빠 2017/11/06 10:14 #

    도움이 되셨다면 저의 보람입니다~ ^^
댓글 입력 영역

구글애드텍스트