(기술해놓지 않아도 명령어군은 동작한다.) 커맨드라인에서 매번 옵션을 지정하는 것은 귀찮지만 그 설정을 파일에 적어두면 일일이 옵션 지정할 필요가 없어진다.
따라서 my.cnf에는 여러가지 기술을 하게 된다.
Unix계열 OS에서는 보통 /etc/my.cnf이다. 윈도우즈에서는 c:\my.ini가 많이 사용된다.
다만 위 기술장소 이외에 있는 파일도 읽어들일 수 있게 되어있다.
여기에서는 my.cnf의 기술, 읽어들이는 순서, 읽어들여지는 그룹, 서포트하고 있는 옵션에 대해서 정리해본다.
my.cnf읽는 순서
--default-file=옵션을 사용하고 있는 경우에는(만약 옵션이 이용가능하다면) 지정된 파일만 읽으므로 주의하길 바란다. 이것 이외에는 보통 여러개의 my.cnf파일을 읽어들인다.
그 기능은 libmysqlclient(libmysql.dll)이 갖추고 있다.
여러개의 파일에 같은 옵션이 기술되어 있는 경우에는 나중에 읽어들인 값으로 대체된다.
또 파일은 전부 존재하지 않으면 안된다.
파일을 읽는 순서, 검색경로는 버전이 올라가면 변경될 가능성은 있다.
다음은 각각의 my.cnf가 읽혀지는 순서이다.
#Unix계열 운영체제 경우 읽는 순서(5.0/5.1)
1. /etc/my.cnf
2. /etc/mysql/my.cnf( 5.1.15-beta이상은 유효. 5.0.45에서는 읽어들이지 않음)
3. $MYSQL_HOME환경변수에 지정된 디렉토리/my.cnf
4.--defaults-extra-file옵션에 지정된 파일
5.$HOME/.my.cnf(명령어를 실행하는 계정의 홈 디렉토리)
6.DEFAULT_SYSCONFDIR/my.cnf
(DEFAULT_SYSCONFDIR은 ./configure --sysconfdir=에서 지정한 디렉토리 5.0.21이상)
#윈도우즈에서 읽는 순서(5.0/5.1)
my.ini하고 my.cnf의 양 파일이 같은 디렉토리에 있는 경우에는 my.ini , my.cnf순으로 읽어들여진다.
1.c:\my.{ini,cnf}
2.%WINDIR%\my.{ini,cnf}
3.%System%\my.{ini,cnf} (%System%은 kernel32.dll이 존재하는 디렉토리)
4.MYSQL_HOME환경변수에 지정된 디렉토리\my.{ini,cnf}
5.명령어가 존재하는 디렉토리의 한단계위의 디렉토리\my.{ini,cnf}
6.--defaults-extra-file=옵션에 지정된 파일
7.DEFAULT_SYSCONFDIR\my.{ini,cnf}
(DEFAULT_SYSCONFDIR은 컴파일할 때 "/D DEFAULT_SYSCONFDIR="처럼 지정된 디렉토리. 현재 바이너리 배포판은 무효. 5.0.21이상 )
버전 4.1에서는 $MYSQL_HOME환경변수는 읽어들이지 않는다. 그 대신에 datadir/my.cnf(datadir는 컴파일할 때 지정한 디렉토리)를 읽어들인다.
5.0.21미만에서는 --sysconfdir(DEFAULT_SYSCONFDIR)에서 지정된 디렉토리에서는 찾지 않는다.
libmysqlclient가 지원하는 옵션
C언어로 작성된 libmysqlclient에는 my.cnf을 읽어들이는 기능이 있다. libmysqlclient는 my.cnf에 써져 있는 다음의 옵션을 지원한다. (sql-common/client.c에 기술)
compress 통신을 gzip압축한다. zlib를 지원하면 사용가능
connect-timeout= 접속 타임아웃(초)
host= 호스트 지정
max-allowed-packet= 1개의 통신패킷의 최대 사이즈(바이트)
password= 접속할때의 패스워드
pipe 접속에 named pipe를 사용(윈도우즈만)
port= 서버의 포트
protocol= [tcp|socket|pipe|memory]
secure-auth 4.1이상 클라이언트 인증에 한정
shared-memory-base-name= shared memory이름
socket= 소켓파일명
user= 접속유저명
timeout= connect-timeout과 동일
ssl-ca= CA의 CERTIFICATE 파일지정
ssl-capath= CA의 CERTIFICATE 파일이 존재하는 디렉토리 지정
ssl-cert= CERTIFICATE파일지정
ssl-cipher= Cipher지정
ssl-key= SSL키 파일의 지정
character-sets-dir= charsets/디렉토리 지정
default-character-set= character set이름 지정
database= 현재 데이터베이스 명
init-command= 서버에 접속후 자동적으로 실행하는 SQL문
disable-local-infile LOCAL INFILE문 무효
local-infile LOCAL INFILE 유효
interactive-timeout= 인터랙티브모드 타임아웃(초)
report-data-truncation DataTruncation을 붙인다.
report-found-rows UPDATE실행할 때 mysql_info()가 변경한 레코드수가 아니라 발견한 레코드 수를 리턴하게 함.
multi-queries 클라이언트가 <;>로 연결된 복수의 SQL문을 한번에 보낼 수 있도록 함
multi-results Result Set를 Multi로 클라이언트가 얻을 수 있도록 함
multi-statements multi-queries와 동일
enable-reads-from-master READ FROM MASTER를 유효로 한다.
debug[=d:t:o,/tmp/client.trace] 디버그 모드 ./configure --with-debug로 유효화