SharedIT | 묻고 답하기(AMP)

MySQL 환경 설정 file my.cnf에 대해서 답변 좀 주세요~

SUN Solaris 9에 MySQL을 설치해서, JAVA로 만든 program으로 Insert Query를 보냈는데

한글 글자가 깨어지네요.

인터넷 검색해서 해결해 보려 했는데, 인터넷에 있는 방법들을 적용해도 해결 방법을 찾지 못하겠네요.

환경 변수값에서 Character set값 변경도 해 보고, Database와 table의 Character set도 변경해 봤는데도,

마찬가지로 한글이 깨어지네요.



my.cnf 환경 설정 file에서 character set 값을 변경하고 MySQL을 재가동하면 된다는 내용이 있어

해보려고 하는데, my.cnf file이 존재하지가 않네요.

/etc에도 없고, /etc/mysql이라는 디렉토리는 아예 존재하지도 않고,
MySQL 홈 디렉토리인 /usr/local/mysql에는 하위 디렉토리만 있고, file 자체가 없고요..



/usr/local/mysql/share/mysql에 보니,

my-huge.cnf, my-innodb-heavy-4G.cnf , my-large.cnf, my-medium.cnf, my-small.cnf

다섯개의 file이 있어 my.cnf와 연관이 있을 것도 같긴한데...

이 file들에는 character set 관련 항목이 존재하지 않아

새로 추가해 준다면 어느 file에 적용하면 될지...

MySQL을 잘 아시는 분의 답변 부탁 드립니다~



/etc/ 디렉토리에 my.cnf file을 만들어 볼까 싶기도 한데,

my.cnf file sample이라도 올려 주신다고 참고해 보고 싶네요.

Tags : 태그가 없습니다.

4개의 답변이 있습니다.

guest
  0 추천 | 9년 이상 전

답을 달고 나니 해결이 되었다고 글 올리신 걸 발견해서 지울까 하다가 참고로 놔둡니다.

유닉스 MySQL의 설정 파일 위치는 다음 순서로 찾습니다.

1. MySQL 데몬을 시작할 때 safe_mysqld 등의 스크립트 내에서 --defaults-file=# 옵션으로 지정한 파일
2. /etc/my.cnf
3. MySQL 데이터 디렉토리(예를 들어 /usr/local/mysql/data) 밑에 my.cnf
4. ~/.my.cnf

MySQL 데몬을 시작할 때 safe_mysqld 등의 스크립트 내에서 --defaults-extra-file=# 옵션으로 지정한 파일은 위 설정 파일을 읽은 후 추가로 읽습니다.

문자셋을 유니코드로 설정하려면 다음 부분을 추가하면 됩니다.

[mysqld]
character-set-server=utf8
skip-character-set-client-handshake

collation-server = utf8_general_ci 는 character-set-server=utf8를 지정했을 때의 디폴트값이기 때문에 따로 지정해줄 필요는 없습니다.

init-connect = SET NAMES utf8 명령은 쓰실 필요 없습니다. 모든 사용자가 서버쪽 문자셋인 utf8을 사용한다는 가정이 있는 경우에는 대신 character-set-client-handshake = FALSE 나 skip-character-set-client-handshake 를 넣어주면 됩니다. init-connect = SET NAMES utf8 명령은 skip-character-set-client-handshake 등의 옵션을 사용할 수 없는 버전에서 사용했던 방법이거든요.

wansoo | 9년 이상 전

감사합니다~ ^^*
참고 할께요.

양성환
  0 추천 | 9년 이상 전

DB 입력시 한글 깨짐의 원인은 워낙 종류가 많습니다.

1. 일단 데이터를 밀어 넣는 곳의 조건을 먼저 확인 하세요
어플리케이션에서 UTF-8 / UTF-8 BOM 인지 EUC_KR 인지 그외인지..

일단 여기서 우선 환경 체크를 하세요

그리고 문자열 문제와 콜레이션 문제는 다르게 생각 하셔야 합니다.
문자열 환경 설정이 잘못되어 있어서 콜레이션으로 밀어 붙일 경우,

디비 속도에 심각한 문제를 일으킬 수 있습니다.

(인덱스 사용을 못하게 됩니다)

2. ,mysql 구동 계정의 환경변수를 확인하세요 (locale )
환경 변수 및 서버 설정 문제 역시 위의 원인이 됩니다.
LANG 타입과 LC_COLLATE 이 주원인이 될 듯 합니다.
그리고 구동 계정에 bash_profile 에 설정을 하면 되겠죠

3. 마지막으로 mysql 설정 확인이죠

라고 적으니 이미 해결된 것 인가요?

wansoo | 9년 이상 전

관심 가져 주셔서 감사합니다~
해결 방법을 알면 별게 아닐 수도 있는데,
모른다면 지푸라기라도 잡고 싶은 심정으로
작은 단서라도 이것 저것 시도해 보고 싶어 지잖아요~ ^^*
다행히 생각보다 쉽게 문제가 해결되었지만,
답변 감사히 받아 들이겠습니다.

guest
  0 추천 | 9년 이상 전

MySQL 쪽은 무지한지라 도움드릴수 없는게 아쉽네요, wansoo님께 항상 많이 배우고 있답니다. 이문제도 잘 해결되시길 바라겠습니다. ^^

wansoo | 9년 이상 전

감사합니다~ ^^*
결국 해결했습니다.
인터넷에는 MySQL쪽 설정 변경쪽 답변들만 있어서 MySQL쪽만 계속 건드렸는데...
MySQL쪽 설정을 변경하니깐 기존에 없던 문제점까지 생겨서 MySQL쪽은 원상 복구해 두고,
Java Program source에서 Character Set을 변환한 후에 Query를 날리니깐 해결되네요.
Java도 오래간만에 건드리고, MySQL도 기초적인 지식으로 작업하려니 많이 버거웠네요~
이제 COBOL Program으로 마무리 작업만 하면 될거 같습니다~ ^^;
워낙~ 옛날 시스템이다 보니... COBOL까지 연관되어 있답니다..쩝...-_-;;
관심 가져 주셔서 고맙습니다.
즐거운 오후되세요~ ^^*

wansoo
  0 추천 | 9년 이상 전

질문 올려두고 답변을 적네요~ㅎ

그렇지만 아직 근본적인 문제는 해결 못하고 있네요..

/usr/local/mysql/share/mysql에 있는

my-huge.cnf, my-innodb-heavy-4G.cnf , my-large.cnf, my-medium.cnf, my-small.cnf file들은

my.cnf의 sample file들이네요..ㅎ

이 파일들의 첫번째 줄에 있는 설명 문구만 읽어 봤었어도 알수 있었을텐데..

마음이 너무 성급했다는 느낌이 드네요~

그렇지만, my-huge.cnf file을 /etc/my.cnf로 복사해서 MySQL을 재 가동하면 잘 가동되는데,

Character set 변수값을 적용하려고 아래 내용을 추가 등록하니깐

MySQL이 시작을 하지 못하네요.ㅠ


[client]

default-character-set = utf8

[mysqld]

character-set-client-handshake = FALSE

collation-server = utf8_general_ci

init-connect = SET NAMES utf8



MySQL 잘 아시는 분의 도움 좀 받고 싶습니다.. ㅠㅠ

돌삐 | 9년 이상 전

mysql로그를 확인해보세요.
뭐 때문에 실행하지 못했다고 로그에 나옵니다.