이번 포스팅은 AWS EC2 인스턴스 MariaDB 한글 깨짐 현상 해결 방법에 대해 알아보도록 하겠습니다.

MariDB을 설치 후 테이블을 생성하고 데이터로 한글을 넣으면 한글이 깨지는 현상이 발생될 수도 있습니다.

한글이 깨지는 이유는 MariaDB를 처음 설치하면 CharacterSet이 Latin1로 되어 있습니다.

Latin1은 한글을 지원하지않으므로 깨지지 않게 하려면 CharacterSet을 utf8로 변경해야합니다.

아래 포스팅을 따라 한글 깨짐 현상을 해결하시면 됩니다.



MariaDB 접속


다음 명령어를 입력하여 MariaDB에 접속합니다.

sudo mysql -u root -p

암호입력: 




MariaDB root 비밀번호 설정하지 않았다면?


MariaDB root 비밀번호를 설정하지 않았다면 다음 명령어를 입력합니다.

만약 MariaDB의 root 비밀번호를 알거나, 설정하였다면 이 부분은 건너뜁니다.

mysql 접속

MariaDB [(none)]> use mysql

MariaDB [(none)]> update user set password=password('비밀번호') where user='root';

MariaDB [(none)]> flush privileges; // 적용




문자셋 (CharacterSet) 확인


다음 명령어를 입력하여 문자셋 (CharacterSet)을 확인합니다.

MariaDB [(none)]> show variables like 'c%';

문자셋 (CharacterSet)을 보면 중간에 latin1로 설정되어 있는 것을 확인할 수 있습니다.

latin1은 한글을 지원하지 않으므로 모두 utf8로 변경 해야합니다.




MariaDB 설정 파일 백업


먼저 MariaDB 설정 파일을 수정하기에 앞서 만약을 대비하여 설정 파일을 백업합니다.

cp /etc/my.cnf /etc/my.cnf.ori

참고, 우분투 같은 경우에는 /etc/mysql/my.cnf 다음 경로에 파일이 존재합니다.




MariaDB 설정 파일 수정


다음 명령어를 입력하여 vi로 설정 파일을 열어줍니다.

vi /etc/my.cnf


[client]

default-character-set=utf8


[mysqld]

port = 3306

init_connect="SET collation_connection=utf8_general_ci"

init_connect="SET NAMES utf8"

character-set-server=utf8

collation-server=utf8_general_ci

skip-character-set-client-handshake


[mysqldump]

default-character-set=utf8


[mysql]

default-character-set=utf8

주의, [] 괄호 안에 항목을 제대로 확인하여 값을 설정합니다.




MariaDB 재시작


다음 명령어를 입력하여 MariaDB를 재시작합니다.

sudo service mysql restart




문자셋 (CharacterSet) 다시 확인


다음 명령어를 입력하여 문자셋 (CharacterSet)을 다시 확인합니다.

MariaDB [(none)]> show variables like 'c%';

모두 utf8로 변경된 것을 확인할 수 있습니다.




위 방법으로도 여전히 한글이 깨진다면?


위 방법으로 안된다면 MariaDB에서 다음 Query를 입력합니다.

MariaDB [(none)]> set names utf8;

MariaDB [(none)]> set session charactersetconnection=utf8;

MariaDB [(none)]> set session charactersetresults=utf8;

MariaDB [(none)]> set session charactersetclient=utf8;


또 다른 문제는 utf8로 바꾸기 전에 데이터베이스가 latin1 인코딩으로 설정되어 있을 가능성이 있습니다.

이러한 경우에는 다음 명령어를 입력하여 데이터베이스에 문자셋 (CharacterSet)을 utf8로 변경해야합니다.

 MariaDB [(none)]> ALTER DATABASE 데이터베이스이름 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;