MySQL 기본 인코딩 변경하기 



MySQL 기본 패키지는 character set 이 latin1로 설정되어 있다. 따라서 서버에 따라서 세팅을 바꿔줘야 할 필요가 있다. 


나같은 경우에는 UTF-8로 통일하였다. 


우선 현재 mysql의 설정값을 확인해 보자 

mysql> show variables like 'c%';

+--------------------------+----------------------------+

| Variable_name         |    | Value                      |

+--------------------------+----------------------------+

| character_set_client      | latin1                     |

| character_set_connection | latin1                     |

| character_set_database   | latin1                     |

| character_set_filesystem | binary                     |

| character_set_results    | latin1                     |

| character_set_server     | latin1                     |

| character_set_system     | utf8                       |

| character_sets_dir       | /usr/share/mysql/charsets/ |

| collation_connection     | latin1_swedish_ci          |

| collation_database       | latin1_swedish_ci          |

| collation_server         | latin1_swedish_ci          |

| completion_type          | 0                          |

| concurrent_insert        | 1                          |

| connect_timeout          | 10                         |

+--------------------------+----------------------------+

14 rows in set (0.02 sec)


역시 latin1으로 되어있다. 


명령어를 통해서도 mysql을 사용할때 변경 할 수 있지만, 이렇게 되면 데몬이 재실행 될때마다 다시 latin1으로 돌아간다. 따라서 고정적으로 바꿔주자. 



  기본 케릭터 셋들을 원하는 값으로 변경 ( UTF-8 로 변경하였다 ) 


$ vi /etc/my.cnf


[mysql]

default-character-set = utf8


[mysqld]

character-set-client-handshake=FALSE

init_connect="SET collation_connection = utf8_general_ci"

init_connect="SET NAMES utf8"

default-character-set = utf8

character-set-server = utf8

collation-server = utf8_general_ci


datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0


[client]

default-character-set = utf8


[mysqldump]

default-character-set = utf8


[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid



그리고 재시작 
$ service mysqld restart 
Stopping MySQL: [ OK ] 
Starting MySQL: [ OK ] 

이제 최종적으로 status를 통해 서버와 mysql의 인코딩이 통일 되었는지 확인해보자 .

mysql> status
--------------
mysql  Ver 14.14 Distrib 5.1.61, for redhat-linux-gnu (x86_64) using readline 5.1

Connection id:          8
Current database:
Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.1.61 Source distribution
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:            /var/lib/mysql/mysql.sock
Uptime:                 27 min 16 sec

Threads: 1  Questions: 52  Slow queries: 0  Opens: 23  Flush tables: 1  Open tables: 11  Queries per second avg: 0.31
--------------

mysql> show variables like 'c%' ;




'IT노트 > MYSQL' 카테고리의 다른 글

[mysql] function 정보  (0) 2015.03.12
한글꺠짐방지 DB 케릭터셋 변경 리눅스  (0) 2015.03.08
18. 스토어드(STORED) 루틴  (0) 2015.03.04
[MySQL] .sql 파일 실행  (0) 2015.03.03
mysqladmin flush-hosts -uroot -p  (0) 2015.03.01
Posted by wychoi
,