제가 Writer 권한이 없어서 글을 올릴 수 있는 곳이 여기인지라,
여기에 올립니다. 게시물의 성격이 맞지 않는다면 운영진에서 다른
곳으로 이동시켜주시면 감사하겠습니다.
이 방법이 다른 분들께 도움이 될 지 모르겠습니다만, 저도 4.1
버전에서 euckr 때문에 애를 먹었습니다. 제가 개발보다도 시스템
엔지니어라서 서버 운용의 항상성에 중점을 두다 보니, 개별적으로
컴파일해서 설치하는 것 보다 RPM으로 자동 업데이트해서 관리하는 것을
선호합니다.
한글 처리 관련해서 여러 가지 옵션이 있지만, 윈도우 버전에서
적용되는 character-set-client-handshake = FALSE 옵션을 my.cnf에도
적용하기 위해서 MySQL의 SRPM을 다시 rebuild하는 방법을 시도했는데,
다행히 한글 부분이 잘 해결이 되었습니다. 윈도우 버전 뿐만 아니라
리눅스에서도 적용이 잘 되었습니다. 굳이 mysqld_safe 명령의 옵션에
추가할 필요가 없었습니다. 한글로도 정확하게 검색이 되고 해서 이
방법이 괜찮으시다면 한 번 시도해보시기 바랍니다. 매뉴얼을 보고 한
것은 아니고 다른 분들이 시도한 방법에 근거해서 시도해본 것인데
다행이 결과가 좋게 나왔을 뿐입니다.
저는 서버에서 알지보드로 게시판 구현하는 부분에서 한글이 계속
??로 깨져서 나오는 것이 문제가 되어 방법을 찾다가 기존 방법을 약간
변형해서 적용해본 것입니다.
환경은 다음과 같습니다.
CentOS 4.2
Apache 2.0.52
PHP 4.3.9
MySQL 4.1.12 -> 4.1.18로 upgrade
모두 RPM으로 설치한 것이고, MySQL의 경우 mysql.com에서
MySQL-standard-4.1.18-0.rhel4.src.rpm을 다운로드해서 rebuild한 뒤에
이것을 가지고 기존 MySQL을 업그레이드했습니다.
1. SRPM rebuild
rpmbuild --rebuild MySQL-standard-4.1.18-0.rhel4.src.rpm
mysql.com에서 RHEL용의 설치파일을 제공하긴 합니다만, signature
등의 문제가 있을 것 같아 SRPM을 rebuild하는 것이 안전할 것 같다는
생각을 했습니다.
/usr/src/redhat/RPMS/i386/ 디렉토리에 설치가능한 rpm 6개가
생깁니다.
2. 설치
mysql을 종료한 뒤, rpm -Uvh로 해서 6개 모두 지정해서
설치했습니다.
그런데 기존 mysql의 소유권자와 그룹이 없어지고 단지 27번(UID,
GID)만 남아 있어서 다시 설정해줬습니다.
3. my.cnf 편집
제가 서버에 설정한 것입니다.
[client]
default-character-set=euckr
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Default to using old password format for compatibility with mysql
3.x
# clients (those using the mysqlclient10 compatibility
package).
old_passwords=1
default-character-set=euckr
init_connect=set collation_connection=euckr-korean_ci
init_connect=set names euckr
character-set-server=euckr
collation-server=euckr_korean_ci
character-set-client-handshake = FALSE
[mysql.server]
user=mysql
basedir=/var/lib
[mysqld_safe]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[mysqldump]
default-character-set=euckr
[mysql]
default-character-set=euckr
물론 httpd.conf와 php.ini에서도 default characterset을 EUC-KR로
설정을 맞췄습니다.
저도 마찬가지입니다만, 다국어 지원부분 때문이라도 빨리 EUC-KR의
사용을 지양하고 유니코드로 옮겨가야 하지 않을까 생각합니다.
|