2012-01-20
mysql 원격접속 방법은 http://b1ix.net/45 으로 가보면 소개 되어 있다. 문제는 원격접속까지는 되는데 해당 db를 select 해보면 한글이 와르르 깨져서 나오는것이다.

당연히 캐릭터셋이 제대로 맞지 않아서 생기는 문제이다. 해당 db의 캐릭터셋이 궁금하다면,
\s show variables like 'cha%'; status
중에 하나를 쳐보길 바란다.

status를 예로 들어본다면,
Server characterset: euckr Db characterset: euckr Client characterset: binary Conn. characterset: binary
이런식의 설정이 보일것이다.

해당 설정을 바꾸려면 show variables like 'cha%'; 하면 볼수 있는
| character_set_client | binary | | character_set_connection | binary | | character_set_database | euckr | | character_set_filesystem | binary | | character_set_results | binary | | character_set_server | euckr | | character_set_system | utf8 |
위의 결과물의 이름처럼 이름처럼
set character_set_client = utf8; set character_set_connection = utf8;
나머지 값들도 위와같이 바꾸거나, 또는
set names utf8;

이런식으로 바꾸어 주면 된다. 자신은 utf-8을 주로 봐왔는데 왜 utf8이라고 써주느냐? 라는 식의 의문이 생긴다면,
show character set;
라고 쳐보기 바란다. 해당 캐릭터셋들에 대한 정보가 나올것이다.

하지만, 원격접속이라는게 그리 만만하질 않다. 이런 설정들은 mysql을 새로 start하면 다 사라질 설정이다.
왜냐하면 새로 시작할때 my.cnf의 기본설정들에 의해서 다시 돌아오기 때문이다.

자 그럼 my.cnf 파일을 찾아서... (필자는 리눅스이기때문에 my.cnf인데.. 윈도우쪽은 아마도 my.ini 일것이다.) 다음을 추가해보자.
[mysqld] init_connect="set collation_connection = utf8_general_ci" init_connect="set names utf8"
[mysqld]부분을 찾아서 그 아랫줄에 위처럼 써놓으면 된다.