Database ( DB )/Database

[MariaDB] Charset 변경 utf8 -> utf8mb4

노루아부지 2021. 12. 9. 14:49

MariaDB를 설치하는 중, 아래 화면에서 Use UTF8 as default server's character set을 체크하면 자동으로 utf-8로 charset이 설정됩니다.

 

설치 후 SHOW VARIABLES LIKE 'c%'; 명령어를 사용하여 보면 다음과 같습니다.

 

위와 같이 utf8mb3와 utf8mb4가 섞여 있는 것을 볼 수 있는데요. 뭔가 찝찝합니다.

 

원래 UTF-8의 경우 4바이트인데 MySQL, MariaDB의 경우 utf8이 3바이트로 구현되어 있었는데 이후 MySQL 5.5.3(2010년 3월) 이후 4바이트인 utf8mb4가 추가되었다고 합니다.

utf8mb4를 사용해야 이모지 등 4바이트가 필요한 언어를 사용하고 싶습니다.

 

깔끔하게 전부 utf8mb4로 통일하고 싶은데요.

방법은 다음과 같습니다.

 

  1. 설정 파일 변경(Linux: my.cnf, Windows: my.ini)
    - Windows 파일 경로: 설치경로/data/my.ini
    - Linux 파일 경로: /etc/my.cnf
    [client]
    default-character-set=utf8mb4
    
    [mysql]
    default-character-set=utf8mb4
    
    [mysqldump]
    default-character-set=utf8mb4
    
    [mysqld]
    character-set-server=utf8mb4
    collation-server=utf8mb4_unicode_ci
    skip-character-set-client-handshake​
    * 여기서는 utf8mb4_unicode_ci로 했지만 utf8mb4_general_ci로 해도 됩니다.
    * skip-character-set-client-handshake
    DB서버와 접속을 할 때 클라이언트는 자신이 사용할 Character set을 설정하며 그 설정을 사용하도록 되어있지만 skip-character-set-client-handshake 옵션을 사용할 경우 클라이언트에서 설정한 Character set을 무시하고 character_set_server 값으로 설정됩니다.

  2. 서버 재시작
    1. Windows
      1. Windows key + R
      2. services.msc 입력
      3. MariaDB restart
    2. Linux(CentOS)
      1. service mariadb restart
  3. 변경된 값 확인
    SHOW VARIABLES LIKE 'c%';


    위와 같이 깔끔하게 변경된 것을 확인 할 수 있습니다.
    그런데 character_set_system은 여전히 utf8mb3로 남아있는 것을 볼 수 있는데, 이 값은 DB Server가 T 식별자(Identifier, 테이블이나 컬럼명 등)를 저장하기 위해 사용하는 character set입니다. 이 값은 사용자가 설정하거나 변경할 수 없다고 합니다.
728x90
loading