--- 읽기전 당부사항 ---

 

나름 자료를 찾고 이해해서 올린 자료입니다혹시나 틀리게 있다면 뭐 이런게 다있어 하고

끝내지 마시고 잘못된 정보 때문에 다른 선의에 피해자가 없게 쪽지나 메일 댓글 등을

이용해서 알려주세요 (--)(__)(--) 굽신~굽신~

 

글쓰게된 배경 및 푸념~

 

이것 하나만 읽어 보시면  IT쪽 일을 하시는 분이라면 감을 잡을 수 있다고 생각합니다.

 

프로그램 경력은 많지만 UNICODE에 대해 자세히 찾아보고 이해하는데 완벽하다는 아니지만 아 이거구나 이해하는데 몇 시간 걸리고 이해만 하고 끝내자니 뭔가 아쉽고 저와 같이 시간낭비 하시는 분이 없기를 바라는 마음으로 블로그에 내용을 정리해서 올리자는 생각에 일단

워드을 켜고 제목을 쓰니 왠지 막막하더군요 -_-;;

그래도 주절주절 쓰다 보니 자료가 왠지 부족하고 용어설명도 두리뭉실하게 되어 있어

혼돈이 되기도 하고 그래서 하나씩 이해할 수 있는 자료까지 수집하는 대까지 꼬박 20시간이

걸리더군요 -_-;; 거짓말 안하고 정리한걸 주욱 보니 왜 20시간이나 걸렸을까

내가 이해력이 딸리구나 라고 생각했습니다그렇지 않고서야 이렇게 오래 걸릴리 없지요

~~~ 이자괴감 ㅜㅜ 아훅 이걸 다시 정리하려면 몇시간 더 걸리겠져 뭐 그래도

왠지 뿌듯하네요.

그리고 누군가 꼭!!! ~~발 도움이 되었으면 좋겠습니다.

 

 

유니코드 와 유니코드 인코딩 차이

 

UTF-8/UTF-16/UTF-32/EUC-KR은 유니코드가 아니고 유니코드를 인코딩하는 방식을 말합니다.

유니코드 와 유니코드 인코딩을 저를 포함해서 혼돈하시는 분들이 많이 있는거 같더군요 물론 알지만 다들 그렇게 명하니까 그렇게 말씀하시는 분도 있지만요 어떻게 명하던 확실한 차이를 알아야 한다고 생각합니다.

 

 

유니코드(UNICODE)

 

유니코드(UNICODE)는 컴퓨터에서 세계 각국의 언어를 통일된 방법으로 표현할 수 있게 제안된 국제적인 문자 코드 규약입니다간단하게 말해서 세계 모든 문자를 0번부터 주욱 번호를 정해서 표를 만든 거라 생각하시면 됩니다.

 

0000부터시작합니다.

 

 

한글은 AC00부터 시작하며   AC00 "입니다. 

 

 유니코드표는 아래 사이트 가시면 모두 볼수 있습니다.

 

 http://rudhar.com/lingtics/uniclnks.htm

 

 

 

유니코드는 2Byte?

 

절대 아닙니다저도 처음에 유니코드는 2BYTE 65536면 세상모든 문자를 표현하고도 남지 라고 생각했습니다그런데 이번에 알게 되었지요

예전에는 2BYTE였는지는 모르지만 시간이 흐르고 UNICODE버전이 올라가면서 많은 문자가 추가 되었습니다보시면 알겠지만 별 이상한 특수문자도 많이 있습니다.

아래 주소에 가시면 UNICODE영역에 대해 알수 있습니다.

http://ko.wikipedia.org/wiki/%EC%9C%A0%EB%8B%88%EC%BD%94%EB%93%9C

 

그럼 도체 뭔 문자가 들어가 있는지 궁굼해서 보기 쉽게 한눈에 볼 수 있는 사이트를

찾아 봤는데 이거 찾는데도 30분이 넘더군요 아래 주소에 가시면 유니코드 표를 볼 수 있습니다영어 울렁증 있으신 분들 놀라지 마시고요 코드표 클릭해서 코드표만 보시면 되고요 나머지 내용은 한글로 잘 번역되어 있는 사이트 많이 있습니다. ^^

http://rudhar.com/lingtics/uniclnks.htm

 

 

유니코드 인코딩 종류?

 

흔히 가장 많이 사용하는 것들은  UTF-8/UTF-16/UTF-32/UCS2/UCS4

등 더 있지만 가장 많이 사용한다고 생각되는 것만 나열 했습니다.

(솔직히 더 찾아 보기도 싫고 방법이 틀리거나 탄생 배경이 틀릴 뿐이지 거기서 거깁니다.)

 

 

유니코드 인코딩은 왜하는가?

 

유니코드에 대해서 알아보면서 개인적으로 결론입니다맞을 수도 있고 틀릴 수도 있습니다.

 

 “한마디로 정의하자면 용량을 줄이기 위함이지요 그 종류가 어려가지가 있는 것이고요”

 

 

유니코드는 여기까지만이다 하고 끝나는게 아니라 계속 추가 됩니다새로운 문자가 생기

있고 아직 추가되지 않은 문자도 많이 있을 거니까요현재는 3바이트있으면 되지만

앞으로는 오바해서 10BYTE가 될 수도 있습니다그럼 한문자를 표현하기 위해서

10BYTE 씩 할당하자니 공간 낭비고 왜 공간 낭비냐 a(61)를 표현하기 위해

00 00 00 00 00 00 00 00 00 61 이렇게 넘처나는 00을 보세요 ㅋㅋ 잘 쓰지도 않는 문자들 때문에 저 공간을 할당해야 한다는 것이 낭비겠지요? ^^ 그래서 나온 것이 인코딩 입니다.

인코딩이라고 해서 특별한게 있는게 아니고요 필요한 문자 및 잘 사용하는 문자를 모와서  코드표를 만들고 그걸 기준으로 변환 하는 것이지요

 

 

EUC-KR, KSC5601, MS949(CP949)는 같다?

 

결론은 먼저 말하자면 틀립니다.

웹프로그램할 때 가장 많이 사용하고 볼 수 있습니다.

저도 처음에 같은건가 해서 검색을 했는데 어떤분이 저랑 같은 생각을 했는지 질문은 했더라고요

답변을 자바를 기준으로 해서 답변을 했는데 옛날에는 KSC5601이라고 이름을 사용했고

자바가 버전 업이 되면서 EUC-KR로 이름이 변경 되었다라고 설명을 했더라고요 전 틀렸다고

생각합니다인코딩 규약이름을 JAVA가 마음대로 할 수는 없는 것이지요옛날에는 KSC5601

사용했는데 지금은  EUC-KR를 사용한다면 모를까요 ^^ 아래 인코딩 종류별로 설명 하겠지만

간단하게 설명하자면 이렇습니다.

 

EUC-KR  : KSC5601 + KSC5603

EUC-KR 을 확장한 것이 CP949입니다.

KSC5601 < EUC-KR < CP949 이런 관계입니다

 

 

 

중간정리

 

- UTF-8/UTF-16/UTF-32/UCS2/UCS4/EUC-KR/CP949는 유니코드 인코딩 종류이다.

- KSC5601,EUC-KR,CP949는 다른 것이다.

- UTF-8 1~4BYTE 까지 가변적으로 인코딩 한다.(영문 :1BYTE 한글 : 3BYTE)

- UTF-16 2~4BYTE 까지 가변적으로 인코딩 한다.(영문:2BYTE 한글 : 2BYTE)

- UTF-32 4BYTE로 고정으로 인코딩 한다.

 

아래 더 자세한 내용을 있지만 여기까지만 알아도 별문제 없다고 생각합니다.

차이점만 요약해서 알아도 프로그램하는데 문제는 없으니까요 뭐 여기까지 내용을

모른다고 해서 프로그램을 못하는것도 아니지만요 ^^

 

 

유니코드 인코딩 종류 설명

 

아래 내용은 설명이 잘되어 있는 사이트에서 가지고 왔습니다.

 

참조사이트 : http://misskor.com/173

 

UTF-8

 

문자에 따라 1 ~ 4 BYTE로 가변적으로 표현합니다.
ASCII 
영역은 1BYTE로 표현하고전체 유니코드 영역에 대해 2, 3, 4BYTE별로 각각 표현할 수 있는 범위를 정해서 가변적으로 변환합니다.
예로 한글의 경우는 전부 3 BYTE 대의 표현 영역에 들어 있습니다.

 

자세한 내용 : http://ko.wikipedia.org/wiki/UTF-8

 

 

UTF-16

 

문자에 따라 2 BYTE 혹은 4 BYTE 로 표현합니다.
65,536
자는 2 BYTE 로 표현하고 있고나머지 약 100만 글자를 4 BYTE 로 표현합니다.

 

UTF-16은 모든 영역의 유니코드를 표현할 수 있는 가변길이 유니코드 인코딩이다기본언어판(BMP, U+0000~U+ffff) 영역은 한개의 16-bit 워드로 인코딩되고다른 언어판(U+10000 이상영역의 문자는 두개의 16-bit 대행 코드 쌍(surrogate pair)로 인코딩된다

 

자세한 내용 : http://ko.wikipedia.org/wiki/UTF-16

 

 

UTF-32

 

4 BYTE 로 각 문자를 표현합니다.
UCS-4
와 동일하지만 17개의 언어판만을 정의한다는 점에서는 UCS-4의 부분 집합에 해당됩니다.

 

 

UCS-2(Universal Character Set 2(octets))

 

하나의 문자를 2 BYTE로 표현합니다.
고정길이로 모든 문자를 2BYTE로 표현 하기 때문에 65536문자만 표현할 수 있다

65536까지 코드표는 UTF-16과 똑같다 다만 그 이상에 문자를 표현할 수 없다는 점만 틀리다

 

UCS-2 UTF-16의 선배격인 인코딩 방식이다. UCS-2는 대행 코드쌍을 지원하지 않는 걸 빼고는 UTF-16과 똑같다따라서기본언어판(BMP,  U+0000~U+ffff)만 인코딩 할 수 있다결론적으로 16-bit single word 고정길이 인코딩 방식이다.

 

 

UCS-4 (Universal Character Set 4(octets))

 

하나의 문자를 4 BYTE 로 표현합니다.
모두 128개의 언어판 그룹 128 * 256 언어판 = 32,768 언어판을 정의합니다.
이는 대략 231 = 2,147,483,648개의 코드에 해당합니다.
UCS-4
는 인코딩 방법이 아니며 문자 코드 자체입니다.

 

 

EUC-KR

 

euc계열은 유닉스계열 코드페이지이고 완성형 코드이다

EUC-KR 완성형 코드라서 "뚫훍뚤훍같은 글자를 표현 할 수 없습니다.

조합형 코드라면 모든 것을 표현할 수 있지만그럴 수 없습니다.

 

Bell Laboratories에서 유닉스 상에서 영문자 이외의 문자를 지원하기 위해 제안한 확장

유닉스 코드(Extend UNIX Code)중 한글 인코딩 방식  영문은 KSC5636로 처리하고 한글은KSC5601로 처리

EUC-KR = KSC5601 + KSC5636

코드 페이지(code page)는 특정한 문자 인코딩 테이블을 위해 쓰이는 전통적인 IBM 용어이다. 문자 인코딩 테이블은 0부터 255까지의 정수를 표현하는 단일 옥텟(octet, 바이트)이라고 불리는 일련의 비트들이 특정한 문자와 결합하여 도표화(mapping)한 것이다. IBM 마이크로소프트는 코드 페이지를 문자열 집합(charset)에 자주 할당한다.  

 

자세한 내용 : http://ko.wikipedia.org/wiki/EUC-KR

 

 

MS949(CP949)

 

이것은 조합형코드는 아니지만완성형코드인 EUC-KR에다가 "뚫훍"같은 글자를 포함시켜 더 많은 글자를 표현할 수 있게 되었습니다. 

그래서 EUC-KR 보다는 CP949로 하는 것이 더 많은 한글 글자를 표현 할 수 있다는 이야기입니다

 

코드 페이지 949(CP949), UHC(Unified Hangul Code) 또는 확장 완성형은 한국어 마이크로소프트 윈도에서 사용되는 문자 인코딩이다윈도 95에서 처음 소개되었으나마이크로소프트에서는 이 인코딩을 기반 문자 집합 이름인 "ks_c_5601-1987"로 사용하고 있다.

CP949 인코딩은 EUC-KR의 확장이며하위 호환성이 있다.

 

 

KSC5601

 

한글 완성형 표준(한글 2,350자표현)

한국공업표준 정보처리분야( C ) 5601번 표준안

 

 

KSC5636

 

이 문자 집합은 ASCII와 거의 동일하며역슬래시(0x5C) 자리에 원화 기호(, U+20A9)가 들어 있는 것만 다르다그러나 실제로는 대부분의 시스템이 ASCII와의 호환성을 위해 원화 기호를 그냥 역슬래시로 처리하고 있으며따라서 실질적으로는 KSC5636 ASCII를 똑같이 처리해도 별다른 문제가 없다.

 

 

 

 UNICODE표를 보고 html이나 프로그램시 어떻게 변환되고 사용해야 하는지 보는 방법은

 

 http://rudhar.com/lingtics/uniclnks.htm 사이트에서 코드표를 보고 유니코드번호를

 

 아래 URL에 입력하면 볼수 있습니다.

 

 예를 들어 AC00 ""에 대해 보고 싶다면 아래와 같이 입력하면 됩니다.

 

 http://www.fileformat.info/info/unicode/char/AC00/index.htm

 

 다른걸 보고 싶다면 빨강색 부분에 코드를 수정하시고 엔터를 치시면 됩니다.

  

 

 그럼 아래 같이 인코딩별로 변환시 값과 활용법을 볼수 있습니다.

 

 

 

 

테스트

직접 메모장에서 테스트를 해보겠습니다.

 

 

  

위 내용을 ansi / unsicode(리틀 엔디언) / unicode(빅엔디언) / utf-8로 저장후 어떻게 저장되어 있는지 핵사코드로 보여주는 프로그램(HexEdit.exe)을 이용하여 보겠습니다.

 

 

Ansi

 

 

6161 6161 B0A1 6161 이렇게 저장 되어 있습니다. 61나는 a이고 B0A1은  입니다.

B0A1이  인 인코딩은 cp949입니다.

 

 

unsicode(리틀 엔디언)

 

 

FFFE 6100 6100 6100 00AC 6100 6100 으로 저장 되어 있습니다.

가장 앞에 FFFE utf-16으로 저장 되어 있고 리틀엔디언으로 저장 되어 있다는

표시입니다그다음 숫자들은 aaaaaa가 인코딩 되어 있는 모습입니다.

 

 

unicode(빅엔디언)

 

 

 

FEFF 0061 0061 0061 AC00 00061 0061 로 저장되어 있는데

전에는 FFFE였는데 FEFF로 변경되어 있는데 FEFF utf-16(빅엔디언)으로 인코딩되어

있다는 표시입니다그다음 숫자는 aaaaaa가 인코딩 되어 있는 모습입니다.

보시면 알겠지만 리틀엔디언과 빅엔디언은 한바이트식 앞뒤가 뒤바꿔져 있는거

말고는 틀린점이 없습니다.

 

 

Utf-8

 

 

EFBB BF61 6161 61EA B080 6161로 저장되어 있는데요

EFBBBF까지고 utf-8로 인코딩 되어 있는다 내용이고요 61 a이고요

EAB080이 가를 의미 합니다. Utf-8에서는 한글 한글자를 표현하기 위해서는 3Byte

사용합니다 3Byte를 사용하는지에 대해서는 아래 사이트에서 utf-8설계 및 구초를

참조하세요

 

자세한 내용 : http://ko.wikipedia.org/wiki/UTF-8

 

 

 

정리를 다하고 보니 테스트 말고는 여기저기 사이트 내용 정리한거 뿐이 안되는거

같네요 ㅠㅠ 처음 시작할 때는 몬가 대단한걸 하는거 같은 느낌에 들어 뿌듯했는데

ㅋㅋ 역시 글은 쓴다는건 쉬운게 아닌거 같네요 ^^

그래도 최대한 깔끔하고 간단히 정리한다고 했는데 워드로 작업하니 9장이나 나오네요

-_-;; 많이 부족하지만 여기까지 읽어 주셔서 감사하고요 많은 도움이 되었으면 하는 마음이고요 요즘 날씨가 미친거 같던데 몸조심들 하세용 ^^




'Development > Common' 카테고리의 다른 글

JIT 컴파일  (0) 2012.01.23
문자 집합(Character Set) 및 문자 인코딩  (0) 2012.01.19
utf-8 & euc-kr  (0) 2012.01.19
IIOP  (0) 2012.01.16
CORBA  (0) 2012.01.16
Posted by linuxism
,

utf-8 & euc-kr

Development/Common 2012. 1. 19. 09:35

한국어 문서를 제공하는 웹 사이트에서 흔히 쓰는 문자 인코딩은 EUC-KR 입니다.

마이크로소프트 기반 제품에서는 "ks_c_5607_1987" 을 쓰기도 한다만, 이것은 올바른 이름이 아닙니다.

 

EUC-KR 은 2byte 로 표현할 수 있는 한글 음절의 수가 2350자로 제한되어 있습니다.

따라서 '','','' 등의 글자를 표현하기 위해서는 8byte 를 써야 합니다.

 

하지만 KS X 1001 부록 3에서 규정한 이 방법은 mozilla firefox 등 gecko 기반 브라우저만 지원합니다.

 

따라서... 모든 브라우저에서 현대 한국어의 모든 음절을 불편없이 쓰기 위해서는 유니코드에 바탕을 둔 인코딩 방법인 UTF-8, UTF-16LE (LE 는 Little Endian. 일부 Windows 기반 프로그램에서 'Unicode' 라고 부르는 인코딩 방법은 실제로는 UTF-16LE 입니다), UTF-16BE (BE 는 Big Endian) 등을 써야 합니다.

 

몇 년 전과는 달리 UTF-8, UTF-16 등을 지원하는 문서 편집기(Windows XP 에서는 노트패드나 워드패드도 지원)와 웹 저작 도구 (예를들어 Dreamweaver, Nvu, Ms FrontPage 등)를 쉽게 구할 수 있습니다.

 

Oracle, DB2 등 상용 DBMS 는 물론이고, MySQL, Postgres 등 open source DB 도 UTF-8 을 잘 지원하며, Linux 의 기본 인코딩도 UTF-8 입니다.

따라서 UTF-8 (혹은 UTF-16)을 사용할 것을 강력하게 권고 드립니다.

 

HTML 문서에 UTF-8 을 사용하면 한글 이름을 지닌 파일을 HTML 문서에서 참조할 때 EUC-KR 문서에서 하듯이 한글 부분을 %-escape 하지 않아도 됩니다.

즉, EUC-KR 문서에서는 'http://www.example.com/%B0%A1%B0%A2.jpg' 라고 해야 하지만, UTF-8 문서에서는 'http://www.example.com/가각.jpg' 라고 할 수 있습니다.

 

이외에도 한국어가 아닌 다른 언어를 지원하거나 (예를들어 한국인을 위한 중국어/일본어/러시아어 사전이나 언어 교육용 웹 사이트), 장차 해외 시장으로 진출할 때 유니코드 기반으로 작업하면 훨씬 편리합니다.

출처 - http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=10503&docId=70743117&qb=dXRmOCBldWNrcg==&enc=utf8&section=kin&rank=2&search_sort=0&spq=0&pid=gxOBEc5Y7vsssaNxcthssc--137862&sid=TxdjmM9PF08AAFcxDGY  


===================================================================================

 

UTF-8 은 EUC-KR 보다 표현 가능한 문자 수가 많습니다. EUC-KR 에는 기껏해야 한글과 한자, 조금의 일본어 문자가 포함되어 있는 것에 비해, UTF-8 은 현재 유니코드로 나타낼 수 있는 거의 모든 언어의 문자가 존재합니다. 또한, EUC-KR 에 없는 옛한글도 UTF-8 에 있어서, 한글을 잘 사용하는데도 UTF-8 이 필수입니다.

리눅스 세계에서 UTF-8 은 큰 대세입니다. UTF-8 에서 잘 동작하고 EUC-KR 에서는 오동작을 하는 프로그램이 차츰차츰 늘어나고 있습니다. 대부분의 프로그램이 UTF-8 기준으로 만들어지고 있는 것입니다. UTF-8 이 국제화에도 조금 더 쉽기 때문이죠.


 



 

'Development > Common' 카테고리의 다른 글

문자 집합(Character Set) 및 문자 인코딩  (0) 2012.01.19
유니코드(UNICODE) & 엔코딩(Encoding)  (1) 2012.01.19
IIOP  (0) 2012.01.16
CORBA  (0) 2012.01.16
XML  (0) 2012.01.16
Posted by linuxism
,

mysqld_safe

DB/MySQL 2012. 1. 18. 23:03

5.4.1. mysqld_safe — MySQL 서버 스타트업 스크립트

mysqld_safe는 유닉스와 NetWare에서 mysqld 서버를 구동 시키는 권장 방법이다.mysqld_safe는 에러가 발생했을 때 서버를 재 구동 시키고 런타임 정보를 에러 로그에 기록하는 것과 같은 안전 기능을 추가로 가지고 있다. NetWare-특성 동작은 이 섹션 후반부에서 다시 하기로 한다.

Note이전 MySQL버전들과의 호환성을 유지하기 위해서, MySQL 바이너리 배포판은 여전히mysqld_safe에 대한 심볼릭 링크로 safe_mysqld를 포함하고 있다하지만이 기능은 향후에 완전히 삭제될 예정이므로 이것에 의존하지 말길 바란다.

디폴트로mysqld_safe는 mysqld-max가 존재하면 이것을 시작하고자 하며그것이 존재하지 않으면 mysqld를 시도한다이러한 동작 구현에 대해서는 잘 숙지해야 한다:

  • 리눅스에서는MySQL-Max RPM은 mysqld_safe의 동작에 의존한다. RPM 은 mysqld-max를 설치하는데이것은 mysqld가 아닌 mysqld_safe를 자동으로 실행 가능하도록 사용한다.
  • 여러분이 mysqld-max 라는 이름의 서버를 포함하고 있는 MySQL-Max 배포판을 설치했고그 다음에 MySQL non-Max으로 업그레이드를 했다면mysqld_safe 는 여전히mysqld-max 서버를 구동 시키려는 시도를 할 것이다만약에 여러분이 이러한 업그레이드를 했다면수동으로 구형 mysqld-max를 삭제해서 mysqld_safe 가 새로운mysqld 서버를 구동 시키게끔 해야 한다.

디폴트 동작을 없애고 여러분이 원하는 서버의 이름을 명확하게 지정하기 위해서는--mysqld 또는 --mysqld-version 옵션을 mysqld_safe에 지정한다또한 –ledir를 사용해서mysqld_safe가 서버를 찾는 디렉토리를 지정하도록 할 수도 있다.

mysqld_safe에 대한 많은 옵션들은 mysqld에 대한 옵션들과 모두 동일하다Section 5.2.1, “mysqld 명령어 옵션을 참조할 것.

명령어 라인에서 mysqld_safe에 지정되는 모든 옵션들은 mysqld에 전달된다만약에mysqld_safe에만 해당되고 mysqld는 지원하지 않는 옵션을 사용하고자 한다면명령어 라인에서 그것들을 지정하지 않으면 된다대신에옵션 파일 그룹의 [mysqld_safe] 안에 그 옵션들을 넣어 둔다Section 4.3.2, “옵션 파일 사용하기를 참조할 것.

mysqld_safe는 옵션 파일에 있는 [mysqld][server], 그리고 [mysqld_safe] 섹션에서 모든 옵션을 읽는다이전 버전과의 호환성을 위해서mysqld_safe는 여러분이 5.0을 설치할 때 [safe_mysqld] 섹션을 [mysqld_safe] 로 재 명명했다고 하더라도 이 섹션도 함께 읽게 된다.

mysqld_safe는 아래의 옵션들을 지원한다:

  • --help

도움말 메시지를 화면에 출력한 다음에 종료한다. ( MySQL 5.0.3에 추가 됨)

  • --autoclose

(NetWare에만 해당됨) NetWare상에서는mysqld_safe는 스크린 존재 (presence)를 제공한다여러분이 mysqld_safe NLM를 셧다운 하면스크린은 디폴트로 사라지지 않는다대신에 사용자 입력용 프롬프트를 보여준다:

*<NLM has terminated; Press any key to close the screen>*

NetWare가 자동으로 스크린을 닫게 하기 위해서는--autoclose옵션을mysqld_safe에 사용한다.

  • --basedir=path

MySQL 설치 디렉토리 경로.                 

  • --core-file-size=size

mysqld가 생성하는 코어 (core) 파일의 크기옵션값은 ulimit –c에 전달 된다.

  • --datadir=path

데이터 디렉토리의 경로.

  • --defaults-extra-file=path

일반적인 옵션 파일과 함께 읽어야 할 옵션 파일의 이름이것이 사용될 경우에는 반드시 명령어 라인 처음에 나와야 한다.

  • --defaults-file=file_name

일반적인 옵션 파일 대신에 읽혀 지는 옵션 파일의 이름만약에 이것을 사용할 경우에는 명령어 라인의 첫 번째 옵션이 되어야 한다.

  • --ledir=path

mysqld_safe가 서버를 찾지 못할 경우이 옵션을 사용하여 서버가 저장되어 있는 디렉토리경로 이름을 가리키도록 한다.

  • --log-error=file_name

에러 로그를 지정한 파일에 기록한다Section 5.12.1, “에러 로그를 참조할 것.

  • --mysqld=prog_name

여러분이 시작하고자 하는 서버 프로그램의 이름 (ledir 디렉토리에 있음). 이 옵션은 여러분이 바이너리 배포판을 사용하고는 있지만 데이터 디렉토리가 바이너리 배포판이 아닌 곳에 있는 경우에 필요하게 된다만약에 mysqld_safe가 서버를 찾지 못할 경우--ledir 옵션을 사용해서 서버가 저장되어 있는 디렉토리 경로 이름을 가리키도록 한다.

  • --mysqld-version=suffix

이 옵션은 --mysqld 옵션과 비슷하지만여러분은 서버 프로그램 이름에 대한 접미사만 지정하면 된다베이스 이름은 mysqld라고 간주한다예를 들면--mysqld-version=max를 사용한다면mysqld_safe는 ledir 디렉토리에 있는 mysqld-max 프로그램을 구동 하기 시작한다--mysqld-version에 대한 인수가 비어 있다면,mysqld_safe는 ledir 디렉토리에 있는 mysqld를 사용한다.

  • --nice=priority

지정한 값에 대한 서버 스케쥴링 우선 순위를 설정하기 위해 nice 프로그램을 사용한다.

  • --no-defaults

어떠한 옵션 파일도 읽지 않는다만약에 이것이 사용될 경우에는 명령어 라인에서 첫 번째 옵션이 되어야 한다.

  • --open-files-limit=count

mysqld가 열 수 있는 파일의 숫자옵션 값은 ulimit –n에 전달 된다이것이 올바르게 동작을 하기 위해서는 root로 mysqld_safe를 구동 시켜야 한다!

  • --pid-file=file_name

프로세스 ID 파일의 경로 이름.

  • --port=port_num

서버가 TCP/IP 연결을 기다릴 때 사용하는 포트 번호포트 번호는 서버가 root시스템 사용자로 구동되지 않는 한 반드시 1024 또는 그 이상 이어야 한다.

  • --socket=path

서버가 로컬 연결을 기다릴 때 사용하는 유닉스 소켓 파일.

  • --timezone=timezone

지정한 옵션 값에 TZ 타임 존 환경 변수를 설정한다올바른 타임 존 지정 포맷에 대해서는 OS 문서를 참고한다.

  • --user={user_name | user_id}

user_name 이름 또는 숫자로 된 사용자 ID user_id를 갖고 있는 사용자로 mysqld서버를 구동 시킨다. (여기에서 사용자 (User)는 시스템 계정을 의미하며그랜트 테이블 안에 있는 MySQL 사용자를 가리키는 것은 아니다.)

옵션 파일에 이름을 주기 위해 --defaults-file 또는 --defaults-extra-option 옵션을 가지고 mysqld_safe를 실행한다면옵션은 반드시 명령어 라인에서 첫번째로 주어져야 한다그렇지 않으면 옵션은 사용되지 않는다예를 들면다음 명령어는 네임드 옵션 파일을 사용하지 않게 된다:

mysql> mysqld_safe --port=port_num --defaults-file=file_name

대신에아래의 명령어를 사용한다:

mysql> mysqld_safe --defaults-file=file_name --port=port_num

일반적인 경우에 mysqld_safe 스크립트는 소스 또는 바이너리 배포판을 설치한 서버를 구동 시키기 위해 작성된다mysqld_safe는 아래의 조건들 중에 하나가 트루 (true)일 것으로 기대한다:

  • 서버와 데이터 베이스는 동작 중인 디렉토리에 관련해서 찾게 된다 (mysqld_safe를 호출한 디렉토리에서). 바이너리 배포판의 경우mysqld_safe는 자신의 동작 디렉토리 밑에서 bin 과 data 디렉토리를 찾는다소스 배포판의 경우libexec 와 var 디렉토리를 찾게 된다만약에 여러분이 MySQL설치 디렉토리에서 mysqld_safe를 실행 시킨다면 이 조건은 일치하게 된다 (예를 들면바이너리 배포판의 경우/usr/local/mysql).
  • 만약에 서버와 데이터 베이스를 동작 중에 있는 디렉토리와 관련해서 찾지 못하게 되면mysqld_safe는 이것들을 절대 경로 이름 (absolute pathname)을 가지고 저장 시키려고 한다전형적인 위치는 /usr/local/libexec 과 /usr/local/var가 된다실제 위치는 배포판이 설치되는 시점에 구성된 값을 가지고 결정된다만약에 MySQL이 서버 구성시에 지정된 위치에 설치되어 있다면 이 조건이 트루 (true)가 된다.

mysqld_safe는 자신의 동작 디렉토리에 관련하여 서버와 데이터 베이스를 찾으려고 시도하기 때문에여러분이 MySQL 설치 디렉토리에서 mysqld_safe를 구동 시키는 한 바이너리 배포판을 어디에도 설치할 수가 있다:

shell> cd mysql_installation_directory
shell> bin/mysqld_safe &

만약에 mysqld_safe가 실패하면비록 MySQL 설치 디렉토리에서 호출을 한 경우라도여러분은 --ledir 와 --datadir 옵션을 지정해서 서버와 데이터 베이스가 저장되어 있는 디렉토리를 가리키도록 할 수 있다.

일반적인 경우에는mysqld_safe 스크립트 수정하지 말도록 한다대신에my.cnf 옵션 파일의 [mysqld_safe] 섹션에 있는 옵션 또는 명령어 라인의 옵션을 사용해서 mysqld_safe를 구성한다드문 경우이긴 하지만mysqld_safe를 직접 편집 해서 서버가 올바르게 구동되도록 해야 할 경우도 있긴 하다하지만이렇게 하게 되면여러분이 수정한 mysqld_safeMySQL을 나중에 업그레이드 할 때 없어지기 때문에복사본을 마리 만들어 두어야 한다.

Posted by linuxism
,