본문 바로가기
DB

[MySQL] MySQL8 기본 캐릭터 셋 'utf8mb4'

by soro.k 2022. 3. 10.

 

 

MySQL은 character set을 따로 설정하지 않으면 MySQL5.7에서는 latin 1, MySQL8은 utf8mb4로 설정되어 있다.

그래서 utf8mb4 인코딩이 기본 캐릭터 셋이 되기 이전에는 MySQL을 설치하고 난 이후에 기본적으로 언어 세팅을 변경해줘야 했다.

 

Character set 확인하는 방법


1. mysql 클라이언트에서 status 명령어를 입력한다.

https://www.lesstif.com/

 

2. mysql 콘솔에서 show variable를 입력한다.

show variables like 'char%';

 

 

utf8mb4 인코딩


기존 MySQL은 3byte의 UTF-8를 사용했다. 그래서 최근에 많이 사용되는 emoji와 같은 글자를 표현하기 위해 필요한 4byte를 지원하지 못했었는데 이 문제를 해결하기 위해서 만들어진 인코딩 방식이다.

 

다국어를 지원하지 않는 서비스라도 emoji나 특수 문자를 원활하게 사용하려면 utf8mb4로 변경하는 것이 좋다.

 

 

character set 변경 방법


my.cnf 수정

...

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

※ 설정 적용 후에는 MySQL 재시작 필수

 

 

UTF-8로 설정된 기존 데이터베이스나 테이블을 변경할 때

ALTER DATABASE <database_name> CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
ALTER TABLE <table_name> CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

 

 


ref.