MySQL에서 한글 인코딩 문제 해결하기

전에 azure에서 mysql 한글 인코딩 문제를 해결하는 과정을 글로 썼었는데, 다시 한 번 똑같은 문제가 생겨서 그 글을 그대로 따라하면서 해결해보려고 하니 잘 되지 않았다.
찾아보니 이미 outdated된 방법이었다...
내가 적어놓은 방법은 데이터베이스의 default character set을 바꾸는 방법이었는데, mysql v5.5부터 그 옵션이 사라졌다고 한다.
그래서 다시 찾은 방법으로 해결했고, 시도해본 방법을 순서대로 적어보려고 한다.

1. mysql shell에서 database의 character set과 collation 설정 바꾸기

ALTER DATABASE db_name CHARACTER SET utf8 COLLATE utf8_general_ci;

위의 명령어를 입력하면 db의 character set 설정이 바뀐다.
이모티콘 같은 문자도 사용하고 싶으면 utf8 대신 utf8mb4로 바꿔주면 된다.

ALTER DATABASE db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

잘 바뀌었는지 확인하는 명령어는 다음과 같다.

show variables like 'c%';

그런데 확인해보니 character_set_server와 collation_server의 값이 바뀌지 않고 그대로 latin1인 것을 확인했다. 그래서 다음 방법으로 넘어갔다.

2. mysql config 파일 수정하기

이 글을 보고 따라했다.
나는 우분투 가상 머신을 사용했기 때문에 사용한 명령어는 아래와 같다.

1. sudo로 config 파일을 연다. 
$ sudo nano /etc/mysql/my.cnf

2.편집기를 사용해서 다음의 내용을 추가한다.
[mysqld]
character-set-client-handshake = FALSE
init_connect = "SET collation_connection = utf8_general_ci"
init-connect = 'SET NAMES utf8'
character-set-server = utf8
collation-server = utf8_general_ci

3. 저장하고 나온 다음 mysql 서버를 재시작한다. 
$ sudo service mysql restart

이렇게 해주었더니 깔끔하게 전부 utf8로 바뀐 것을 확인할 수 있었다.

참고로 항상 헷갈리는 nano 편집기 명령어는 다음과 같다.

편집 후 저장하고 파일명 엔터친 후 다음 나가면 됨
ctrl + o : 저장하기
ctrl + x : 나가기

config 파일을 바꾸는 게 정답이었다.

같이 보기

  • 참고글
    : 테이블과 컬럼 레벨에서의 collation set을 바꾸는 방법이 나와있다.

좋은 웹페이지 즐겨찾기