리눅스
MySQL 캐릭터셋(문자 인코딩)을 UTF-8로 변경하는 방법
변군이글루
2013. 7. 16. 01:10
반응형
MySQL 캐릭터셋(문자 인코딩)을 UTF-8로 변경하는 방법
다국어 데이터를 저장하거나 웹 애플리케이션과 연동할 때, 데이터베이스의 문자 인코딩(Character Set) 설정은 매우 중요합니다. MySQL에서는 기본 문자셋으로 **UTF-8(utf8 또는 utf8mb4)**을 사용하는 것이 일반적인 추세입니다.
1. 현재 문자셋 설정 확인
현재 설정된 문자셋을 확인합니다.
mysql> SHOW VARIABLES LIKE 'char%';
MySQL 서버의 문자셋 관련 변수들을 출력합니다.
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_results | latin1 |
| character_set_server | latin1 |
+--------------------------+----------------------------+
- 대부분이 latin1 등으로 설정되어 있다면 UTF-8로의 변경이 필요합니다.
특정 테이블의 문자셋을 확인합니다.
mysql> SHOW TABLE STATUS FROM [데이터베이스명] LIKE '테이블명';
2. my.cnf 설정 파일 수정
MySQL 서버의 전역 문자셋을 변경하려면 /etc/my.cnf(또는 /etc/mysql/my.cnf) 파일을 편집합니다.
sudo vim /etc/my.cnf
각 섹션별로 문자셋을 utf8로 설정합니다.
[client]
default-character-set = utf8
[mysql]
default-character-set = utf8
[mysqld]
character-set-server = utf8
collation-server = utf8_general_ci
init_connect = SET NAMES utf8
init_connect = SET collation_connection = utf8_general_ci
default-character-set = utf8
[mysqldump]
default-character-set = utf8
- init_connect는 비루트 사용자 로그인 시 자동으로 실행되어 문자셋 설정을 적용합니다. 루트(root) 계정에는 적용되지 않습니다.
3. MySQL 재시작
설정 반영을 위해 MySQL 서비스를 재시작합니다.
sudo systemctl restart mysqld
재시작 후 다시 문자셋을 확인해 변경이 반영되었는지 확인합니다.
mysql> SHOW VARIABLES LIKE 'character_set%';
4. 추가 팁: utf8 vs utf8mb4
MySQL에서 utf8은 실제로 3바이트 UTF-8이며, 일부 이모지(emoji)나 특수 문자는 저장되지 않을 수 있습니다.
이를 해결하려면 utf8mb4를 사용하는 것이 더 안전합니다.
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
init_connect = SET NAMES utf8mb4
init_connect = SET collation_connection = utf8mb4_general_ci
728x90
반응형