DB/DB 공통 관리

MySQL character set 확인 및 변경

서버엔지니어 2023. 3. 11.
728x90

MySQL character set 확인 및 변경

 

1.서버안에서character set 확인

mysql> show character set ; ///사용할 수 있는 캐릭터 셋 종류 확인
mysql> show character set where description like '%Korean%' ; 
///description의 칼럼에서 korean단어를 포함하고있는 캐릭터셋 찾기

간단하게 캐릭터 셋 확인하는 방법

mysql> status
Server characterset: latin1
Db characterset: latin1
Client characterset: utf8
Conn. characterset: utf8

========================================================================
Servere characterset : 데이터베이스 생성 시 기본 값을 지정해 주지 않을 경우, 이 값으로 데이터 베이스 캐릭터 셋이 설정 됨.
DB characterset : 테이블 생성 시 기본 값을 지정해 주지 않을 경우, 이 값으로 테이블의 캐릭터 셋이 설정 됨.
Client characterset : 클라이언트 인코딩 설정 값.
========================================================================

서버안에서 데이터 베이스 default character set 설정


생성 시 설정해 주는 방법
CREATE DATABASE `utf8db` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;
CREATE DATABASE `euekrdb` DEFAULT CHARACTER SET euckr COLLATE euckr_korean_ci ;

Alter 명령으로 변경 하는 방법
ALTER DATABASE db명 DEFAULT CHARACTER SET utf8 ;

데이터베이스 캐릭터 셋 확인
SELECT schema_name , default_character_set_name
FROM information_schema.schemata ;

테이블의 캐릭터 셋 설정 및 확인
CREATE TABLE 테이블명 (id int , name varchar(10)) DEFAULT CHARSET=utf8 ;
SELECT table_schema , table_name , table_collation
FROM information_schema.tables
WHERE table_schema = 'information_schema' AND table_name = 'PROCESSLIST'

임시적인 변경
mysql> set names 케릭터셋 ;
mysql> set names latin1 ;

서버밖에서 데이터 베이스 default character set 설정

영구적인 변경
/etc/my.cnf 파일에 캐릭터 셋을 명시 후 MySQL 재 기동.

예) utf8로 변경 시

[client]
default-character-set = utf8

[mysql]
skip-character-set-client-handshake
default-character-set = utf8
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8

[mysqldump]
default-character-set = utf8
같은 mysql 5. 대 인듯하나..5.5에서 부터 좀 변경이 된건지...위와 같이하면 mysql실행시 조차 되지않는다.
그래서 아래와 같이 변경하니 언어셋이 모두 euckr로 변경이 되엇다..

-------------------------------------------------------------------------------
[client]
default-character-set = euckr

[mysqld]
character_set_server=euckr

[mysqldump]
character_set_server = euckr

[mysql]
default-character-set=euckr
-------------------------------------------------------------------------------

 

그리고 특정 데이터베이스의 전체 언어셋 변경 쿼리문

[ euckr ]
alter database [DB명] default character set euckr collate euckr_korean_ci;

[ utf8 ]
alter database [DB명] default character set utf8 collate utf8_general_ci;

 

 

 

 

 

 

 

 

 

댓글