크게 바이너리 설치와 소스 설치로 나눌 수 있다.
바이너리 패키지는 설치가 쉬운 반면, 업그레이드 시 기존 DB를 덮어쓰는 문제가 있다고 한다.
소스설치는 번거롭긴 한데, 업그레이드가 쉽고 세밀하게 권한설정을 줄 수 있어 좀 더 보안성을 높일 수 있고, 그밖에도 여러모로 유연한 점이 많은 모양이다.
이런 소스설치의 강점과 바이너리 패키지의 편리함을 같이 누릴 수 있는 방법이 있는데 BSD계열의 ports 패키지 관리시스템을 사용하는 것이다.
일단 ports를 설치하고 설정(요약본)한 다음 MySQL을 설치해 보자.
I. 설치
sudo port -v upgrade mysql5 +server
II. 환경설정
/opt/local/etc/mysql5/my.cnf 에 환경설정.
(Mac OS X 10.4 Tiger 의 경우에는 /etc/my.cnf 에 설정파일이 있었던걸로 기억한다)
환경설정 파일 예제(my.cnf)
------------------------------------------------------------------
[mysqld]
#skip-networking
user = mysql
#default-character-set = euckr
#character-set-server = euckr
#port = 3306
#socket = /opt/local/var/run/mysql5/mysqld.sock
#socket = /tmp/mysqld.sock
#pid-file = /opt/local/var/run/mysql5
log-error = /opt/local/var/db/mysql5/mysqld.err
log = /opt/local/var/db/mysql5/mysqld.log
datadir = /opt/local/var/db/mysql5
default-collation = utf8_general_ci
default-character-set = utf8
lower_case_table_names=1
[client]
default-character-set=utf8
------------------------------------------------------------------
위는 my.cnf 예제이다 기동을 위해 필수적인 기본사항만 여기서 일단 소개하기로 한다.
(# 은 아시다시피 주석입니다. 아래 내용을 참고하여 자신의 상황에 맞게 설정하시고 주석을 해제하셔야 합니다!! )
1. 인코딩 설정
ㄱ, EUC-KR
default-chracter-set = euckr
character-set-server = euckr
default-collation = euckr_korean_ci
default-character-set = euckr
ㄴ. UTf-8
default-character-set = utf8
character-set-server = utf8
default-collation = utf8_general_ci
default-character-set = utf8
2. Logging 설정
log-error = /opt/local/var/db/mysql5/mysqld.err
log = /opt/local/var/db/mysql5/mysqld.log
여기서 log-error 지시자는 mysql 쿼리중 에러만 기록하는 로그파일을 지정한다
log 지시자는 mysql 접속부터 쿼리 내역, 성공적인 실행 여부까지 저장하는 로그파일을 지정한다
물론 log 지시자는 Deployment 머신에서 쓰면 로그파일로 루트드라이브가 꽉 찰 수 있으니 개발시에만 사용하도록 하자.
3. MySQL DB 유형 및 세부셋팅
MySQL 에서 DB타입이 3가지가 있다는 것은 알고 계실것이다.
각 타입에 맞는 cnf 파일이 /opt/local/share/mysql5/mysql 디렉토리에 있으니 참조하시길 바란다.
--------------
III. 기본 데이터베이스 설치 및 관리자 암호 설정
그리고 기본 DB를 install
sudo -u mysql mysql_install_db5 --user=mysql
(만일 뒤에 --user 스위치를 붙이지 않고 실행했다면.. DB디렉토리 및 하위파일의 소유자를 mysql:admin 으로 바꿔줘야 한다. )
IV. MySQL 기동 및 관리자 암호 설정
mysql5.wrapper 스크립트를 /opt/local/bin 으로 카피.
sudo -u mysql mysql5.wrapper start 로 띄워보자.
만약 설치 명령시 +server 라는 Variant 를 추가해서 설치하지 않았다면 mysql5.wrapper 가 없을 것이다. 그럴 경우 아래 명령을 통해 기동할 수 있다
cd /opt/local ; /opt/local/lib/mysql5/bin/mysqld_safe &
만약 실패한다면 다음것을 체크.
1) /opt/local/var/run/mysql5 디렉토리가 존재하며 소유자가 mysql:admin 인가.
2) /opt/local/var/db/mysql5 (DB디렉토리) 가 존재하며 소유자가 mysql:admin 인가.
그래도 뭔가 문제가 있다면, /opt/local/var/db/mysql5 내에 로그파일이 생성되나 확인하고 생성된다면 tail 이나 콘솔로 에러를 확인해 본다.
DB 기동을 확인했다면 마지막으로 mysql 관리자 암호를 설정해야 한다.
sudo /opt/local/lib/mysql5/bin/mysqladmin -u root password '암호문자열'
원격 호스트의 암호를 변경하려면 아래와 같이 호스트를 지정할 수 있다
/opt/local/lib/mysql5/bin/mysqladmin - u root -h '호스트이름' password 'new-password'
(위의 명령은 한줄이다.. 한줄에 다 칠 것 -_-;;; )
여기서 new-password 부분을 자신의 암호로 대체해서 명령하면 된다
암호문자열 부분을 여러분이 원하는 암호로 치환하여 관리자 암호를 설정한 다음 접속해 보자
mysql5 -u root -p
암호를 물을것이다. 정한 암호를 넣어 콘솔이 기동된다면 성공.
만약 기동되지 않는다면 /opt/local/var/run/mysql5/mysqld.sock 파일이 생성되었는지 확인할 것.
my.cnf 에서 이 소켓파일 생성을 지정하였음에도 불구하고 생성되지 않았다면 시스템상에 다른 문제가 있는것이다.
끗. ㅋㅋ
----------------------
내가 설정한것
1. 시스템 시작시 MySQL 이 시작되게 하지 않는다.
Lingon 에서 자동시작 끔.
아니면 /opt/local/etc/LaunchDaemons/org.macports.mysql5/org.macpots.mysql5.plist 를
Property List Editor 나 vim 으로 RunAtLoad 항목을 No 로 설정하면 된다.
2. 소켓이 /tmp 에 생성되어야 CocoaMysql 을 사용할 수 있다고 한다.
다른 프로그램들도 /tmp/mysqld.sock 을 많이 찾는다는 듯
my.cnf 에서 소켓파일생성을 지정한 부분에서 기본값을 /tmp/mysqld.sock 로 바꾸고 mysql5.wrapper 시작시 /tmp/mysqld.sock -> /opt/local/var/run/mysql5/mysqld.sock 으로 심볼릭링크를 작성하게 함
3. 인코딩 euckr 설정. 잘 된다.
4. 일반쿼리로그 작성.
일단 위의 my.cnf 대로 하면 로그인,쿼리내역등이 로깅된다. 필요할 때만 활용하자.
5. ODBC로 데이터가 깨져서 들어갈때 인코딩 주의할 것. (서버인코딩과 클라이언트 ODBC 드라이버 인코딩이 일치해야 함)
----------------
ports 같은 사심어린 툴 따위 사용하지 않고, 직접 소스컴파일 설치하시겠다는 분들은 여기.
또는 인스톨 프로그램을 사용하지 않고, 직접 바이너리 설치하시겠다는 분들은 이것을 참고하세요
추가로 MySQL 보다는 "남자라면 오라클" 이라고 하시는 분들은... Mac OS X Server 를 구매하셔야 합니다 ;;
사족 :
이번에 제 머신에 재 설치를 하기위해 이 메뉴얼을 보다가, 최근에 변경된 부분인, 환경설정 파일의 경로와 이전에 미쳐 신경쓰지 못했던 관리자암호 변경 부분을 추가했습니다.
환경설정 파일 내역은 당연히 사용하시는 분들께서 customize 하실거라고 생각해서 저렇게 주석을 포함한 상태로 보여드렸었는데, 한번도 mysql 을 *nix 계열에서 설치해 보지 않으신 분들께 혼란을 드릴 여지가 있기에 설명을 추가했습니다.