2011/01/06 00:42
Oracle 은 MySQL 5.5 를 발표했다. 아무래도 웹DB의 절대강자인 MySQL 을 계속 개발하겠다는 의미도 포함된 것 같다. 역시 이번 릴리즈에서도 Community 버전은 Free 이다. 보다 자세한 내용은 아래 링크를 클릭하면 된다.

http://www.oracle.com/us/dm/h2fy11/63712-wwmk10037168mpp185c002-oem1-203601-ko.html

Posted by 꿈이 있는 자유
2010/08/07 15:52
이번 글에서는 MySQL 을 소스 컴파일 설치에 대해 알아보기로 하자. yum 으로 설치하면 훨씬 쉽고 간단하고 환경설정하기도 편하겠지만, 그럼에도 소스를 다운받아 configure 하고 make 하고 install 하는 것은 yum 으로 설치할 때와 다른 새로운 맛이 될 것이다. 수동으로 설치할 때만이 맛볼 수 있는 긴장감(?), 예상치 못한 오류들, 그러기에 구글링을 포함한 다양한 자료수집 그럼으로 결국은 사서 고생할 것이지만 그것이 좋은 공부가 될 것이라고 믿기 때문이다.
이미지 갯수가 60개가 넘기에 긴 작업이 될 것이다. 필자가 여기서 설명하는 예와 다른 문제 다른 에러도 만날 것이다. 그렇지만 일부러 사서하는 공부니까 꼭 실험해보기 바란다. 또한 구글링하면 요새 세상이 좋아져서 해답이 다 나온다. 이 글을 보고 보다 더 새롭고 귀중한 자료나 정보가 있으면 또한 보다 더 쉽게 설명할 수 있는 부분은 함께 공유할 수 있었으면 하는 바램이다.

각설하고...설치해보자. 설치는 크게 설치전 작업, 설치, 설치 후 작업으로 나눠진다.
설치하기 전에 머쉰에 아래와 같은 프로그램 혹은 패키지가 설치되어 있어야 한다.

1. distribution 파일 압축풀기 위해 GNU gunzip
2. tar : 만일 gunzip 을 사용하지 않고 tar 로 압축을 풀어도 된다. 하지만, 몇몇 플랫폼에서는 압축파일 이름의 길이문제로 약간의 문제가 보고되고 있다. 일부 OS 즉, Mac OS X, SunOS 4.x, Solaris 8, Solaris 9, Solaris 10, OpenSolaris, 그리고 HP-UX 에서는 약간의 문제가 있다. 따라서 Mac OS X 에서는 gnutar 프로그램을 먼저 설치해야 한다. 또한 Solaris 10 과 OpenSolaris 에서는 gtar 을 먼저 설치돼야 한다.
3. ANSI C++ 컴파일러 : GCC 3.2 혹은 이후 버전, Sun Studio 10 혹은 이후 버전, Visual Studio 2005 과 이후 버전 등. 필자는 g++ 컴파일러로서 gcc-c++ 을 설치할 것이다.
4. make 프로그램 : 특별히 GNU make 프로그램을 추천한다. GNU make 3.75 버전 혹은 그 이후 버전이면 된다.
5. libtool 1.5.24 혹은 그 이후 버전 : CentOS 에서 설치할 때에는 문제가 발생하지 않지만, Fedora 13에서는 설치시 경고를 만나게 된다. 아마도 필자의 짧은 생각으로는 두개의 프로그램의 버전 충돌일 것 같다. 에러가 아니라 경고이기 때문에 설치해도 문제는 발생하지 않지만, 그래도 좀 찝찝하다.

설치 전 작업

1. 먼저 설치할 머쉰에 다른 버전이 설치되어 있는지 확인하자.

rpm -qa | grep mysql

MySQL Server 즉 mysql-server 가 설치돼있지 않다.


2. 소스를 다운받기 위해 MySQL 사이트를 방문한다. [MySQL Community Server] 섹션의 [DOWNLOAD] 링크를 클릭한다.



3. MySQL Community Server 다운로드 사이트로 들어왔다. 직접 아래의 링크로 방문해도 된다.



4. 아래쪽으로 스크롤하면 다운로드 받을 수 있는 최신버전이 보인다. 이 글을 쓰고 있는 현재 최신버전은 5.1.49이다. [MySQL Community Server 5.1.49] 섹션의 [Select Platform] 목록에서 [Source Code] 를 선택한다.


5. 제일 아래쪽에 보면 [Generic Linux (Architecture Independent), Compressed TAR Archive]가 보인다. [Download] 버튼을 클릭한다. 다운로드받을 파일의 이름은 [mysql-5.1.49.tar.gz] 이다.



6. 등록된 계정으로 다운받으라고 하는 거다. 하지만 계정이 없어도 다운로드할 수 있다. 아래쪽의 [No thanks, just take me to the downloads!] 링크를 클릭하면 된다.


7. Mirror 사이트들이 쭉 나온다. 한국에서는 경희대학교 리눅스 사용자 그룹이 보인다. 안타깝게도 속도가 많이 떨어지기 때문에 가까운 일본이나 기타 아시아 국가 혹은 다른 지역의 국가로부터 다운받아도 된다. 어짜피 설치언어는 공통적으로 영어를 사용하기 때문이다.


8. 필자는 일본쪽에서 다운로드 하기로 했다. 한국의 KAIST 가 있다면 일본엔 JAIST(일본과학기술원)이 있나보다. [JAIST, Japan] 의 [HTTP] 링크를 클릭하여 다운로드받자.


9. 다운받을 파일의 이름이 [mysql-5.1.49.tar.gz] 임을 확인하고, [Save] 버튼을 눌러 다운로드 및 저장하자.


10. 다운로드가 끝났다.


11. 일반계정으로는 설치가 안되니까 root 로 switch 하자.


12. 다운로드받은 디렉토리로 이동한다. 이동 후 다운로드 파일을 확인한다.


13. 압축을 풀자.

tar xvfz mysql-5.1.49.tar.gz


14. 압축이 모두 풀렸으면 압축풀린 디렉토리로 이동한다.

cd mysql-5.1.49



15. MySQL  설치가 모두 끝나고 mysqld 데몬 서비스를 실행할 계정을 생성한다. 별도로 mysql 계정을 생성하자.

useradd -M -s /bin/false mysql

-M 옵션은 새로 생성될 계정인 mysql 은 /home 디렉토리 하위에 홈디렉토리를 생성하지 말라는 명령이다.
-s 옵션은 생성될 계정의 로그인쉘 경로를 지정하는 명령이다. 위에서 보면 로그인쉘의 경로에  false 를 넣음으로써 보안을 위해 머쉰에 직접 로그인을 하지 못하게 했다.


16. 다운받은 파일의 압축을 모두 풀면 아래와 같다.



설치 작업

1. configure 하자. configure 에 대한 보다 자세한 설명은 ./configure --help 로 확인하자.

./configure --prefix=/usr/local/mysql \
--localstatedir=/usr/local/mysql/data \

--with-charset=utf8 \
--with-extra-charsets=all

--prefix=/usr/local/mysql : MySQL 설치폴더를 지정하다.
--localstatedir=/usr/local/mysql/data : 데이타베이스 설치폴더를 지정한다.
--with-charset=utf8 : 디폴트 charset 을 지정한다. 데이타가 영어면 문제없지만, unicode 를 사용해야 하는 한국어, 중국어, 일본어 를 사용하려면 utf8 로 기본 charset 을 지정해야 한다.
--with-extra-charsets=all : 디폴트 charset 외에 나머지도 사용할 수 있도록 등록


2. configure 시 발생할만한 에러는 크게 2가지 정도이다. 첫번째는 아래 그림과 같은 에러이다.
참고사이트 : http://karasix.blog.me/10090278147

configure: error : No curses/termcap library found


3. 에러를 해결하기 위해 ncurses-devel 을 설치해야 한다.

yum -y install ncurses-devel


4. ncurses-devel 설치가 끝났다.


5. 다시 configure 를 하면 아래와 같은 오류가 또 발견된다. 오류의 이유인즉 libtoolT 인 것 같다.


6. 이 문제를 해결하기 위해서 libtool 을 설치해야 한다.

yum -y install libtool


7. libtool 설치가 끝났다. libtool 말고 autoconf, automake 도 같이 설치된 것을 알 수 있다. 이 파일들은 모두 자화된 빌드 시스템 구축에 필요한 파일들이다. aclocal, autoconf, automake 로 configure, Makefile 을 생성한다. 참고사이트 : http://blog.naver.com/taeboong?Redirect=Log&logNo=150040367906, http://mcchae.egloos.com/5202990


8. 설치가 끝났으니 필요한 환경설정을 해야 한다.

autoreconf --force --install

autoreconf 에 대해 잠깐 설명드리자면(필자의 짧은 지식에 구글링해보니)... Unix/Linux 에서는 프로그램을 만들기 위해서 makefile 스크립트를 자동으로 생성하게 도와주는 자동화 툴인 automake가 필요하게 되는데, Makefile.am configure.ac 두개의 파일을 생성시켜 주는 역할을 한다고 한다. 옵션으로 -f(orce) 과 -i(nstall) 로 자동화 스크립트가 자동으로 두개의 파일을 생성시켜 준다. 즉 autoconf 를 다시 설치하라는 명령이다.


9. autoreconf 설치가 끝났다.


10. aclocal 은 보통 autogen.sh 혹은 autoreconf 실행 시 제일 처음으로 불리며 configure.in 혹은 configure.ac 파일을 읽어 필요한 m4 매크로들을 aclocal.m4 파일로 정리해 주는 perl 스크립트이다.
참고사이트 : http://studyfoss.egloos.com/4922394, http://mcchae.egloos.com/5202990

aclocal
libtoolize --automake --force
automake --force --add-missing


11. configure 를 위한 준비작업이 모두 끝났다.


12. 하지만 다시 configure 를 실행해도 에러메시지는 없어지지 않았다. 물론 Fedora 와 같은 회사에서 제작한 CentOS 에서는 성공적으로 수행되지만, Fedora 에서는 에러메시지가 계속 나타나는 이유는 아마도 버전충돌문제로 보인다. 참고사이트: http://karasix.blog.me/10090278147


13. 그렇다고 MySQL 이 설치과정에서 그리 크게 문제가 되지 않기 때문에 소스 컴파일하자.(그래도 기분은 찝찝...)

make


14. make 즉 컴파일시 발생하는 문제점은 아래의 그림과 같이 g++ 을 찾을 수 없다는 오류이다. 이 오류는 위의 MySQL 설치 전 미리 설치해야할 프로그램 중 C++ 컴파일러가 있어야 한다고 했는데, ANSI C++ 컴파일러 가 없어서 사전에 설치되어있지 않아서 그런거다.


15. gcc만 설치되어있다고 g++이 설치되는 것이 아니다. 필자의 머쉰에도 gcc가 설치되어 있지만 g++은 별도로 설치해야 한다. yum 으로 설치하자.

yum -y install gcc-c++


16. g++ 설치가 끝났다.


17. 다시 컴파일하자.


18. 컴파일이 끝났다.


19. 컴파일이 끝나면 이제 드뎌 설치하자.

make install



20. 드디어 MySQL 설치가 끝났다.


21. 설치 디렉토리를 확인해 보자. 위의 configure 할 때 --prefix=/usr/local/mysql 로 했던 것을 기억하는가?




설치 후 작업

1. 환경설정 옵션 파일을 set up 하려면, support-files 하위의 적절한 파일을 골라서 템플릿으로서 사용해야 한다. 이 샘플파일들은 시스템의 메모리에 따라서 선정하게 되는데, 아래와 같다.

1) my-huge.conf : 메모리가 1GB ~ 2GB 사이일 때 사용
2) my-large.conf : 메모리가 512MB 일 대 사용
3) my-medium.conf : 메모리가 64MB ~ 256MB 일 때 사용
4) my-small.conf : 메모리가 64MB 보다 작을 때 사용

위의 파일중의 하나를 시스템에 맞게 선정하여 /etc 디렉토리에 my.conf 라는 이름으로 복사하면 된다.

cp support-files/my-huge.conf /etc/my.conf


2. 이제 본격적으로 환경설정하기 위해 설치된 위치로 작업 디렉토리를 변경하자.

cd /usr/local/mysql


3. 설치 전 작업에서 생성한 계정 mysql 을 확인해 보자.

cat /etc/passwd | grep mysql

 
4. 현재까지의 모든 작업은 root 권한으로 수행했다. 그렇다면 소유주는 당연히 root 이다. 설치 디렉토리내에서 root 의 권한으로 다음의 명령을 수행하여 이후 설치가 mysql 계정의 권한으로 수행되게 하자. 즉 소유권변경하자.

chown -R mysql .
chgrp -R mysql .

현재 작업 디렉토리가 /usr/local/mysql 이기 때문에 이 디렉토리 즉 현재 디렉토리의 모든 소유권은 mysql 계정에게, 그리고 그룹 또한 mysql 로 변경했다. mysql 디렉토리의 소유권과 소유그룹을 확인해 보자.


5. 이제 MySQL 서버에 데이타베이스를 설치하자.

bin/mysql_install_db --user=mysql

mysql 계정으로 bin 디렉토리하위에 있는 mysql_install_db 명령으로 데이타베이스를 설치했다. 그런데, 아래의 그림에 보면 Warning 이 보인다. --skip-locking 문제인 것 같다. 이 Warning 을 없애기 위해서는 my.conf 파일을 열어서 수정해야 한다.


6. vi 에디터를 이용해서 아까 샘플 파일을 복사했던 my.conf 파일을 열자.

vi /etc/my.conf


7. The MySQL server 섹션을 찾아서 skip-locking 앞에 # 을 넣어 주석처리하자.

#skip-locking


8. 다시 데이타베이스를 설치하자.


9. 설치가 성공적으로 끝나면 configure 할 때 지정했던 것처럼(--localstatedir=/usr/local/mysql/data) mysql 디렉토리 하위에 새롭게 data 디렉토리가 생성된 것을 볼 수 있다.


10. 새로 생성된 data 디렉토리만 mysql 계정에게 소유권을 주고 나머지는 다시 root 에게 소유권을 할당한다.

chown -R root .
chown -R mysql data

이렇게 하면 현재 디렉토리에서 data 디렉토리만 소유권이 mysql 계정이고, 나머지는 root 가 소유주가 된다.


11. 확인해 보자.


12. 이제 모두 설치와 환경설정이 끝났기 때문에 mysql 서비스를 시작하자.

/usr/local/mysql/bin/mysqld_safe --user=mysql &

&의 의미는 백그라운드로 서비스를 시작하라는 거다. 서비스를 시작하면 OK 라는 글자는 나타나지 않는다. 백그라운드로 서비스를 돌리기 때문이다. 서비스를 멈추기 위해서는 Ctrl + C 를 누르면 된다.


13. 서비스가 잘 실행되고 있는지 프로세스 목록으로 확인해 보자. 잘 실행되고 있다. 내용을 보니 현재 데이타 디렉토리는 /usr/local/mysql/data 이고, 에러 로그 파일은 /usr/local/mysql/data/Peter.err 인 것을 알 수 있다.

ps -ef | grep mysqld


14. MySQL 을 보다 편하게 사용하기 위해 PATH 설정하자. 만일 특정 사용자용으로 PATH 설정하려면 각 계정의 환경설정파일 즉 쉘 환경파일인 bash_profile 에 등록하면 되고, 모든 사용자용으로 PATH 설정하려면 profile 파일을 수정하면 되겠다. 필자는 모든 사용자용으로 PATH 설정하기 위해 /etc/profile 파일을 수정하기로 했다. vi 로 열자.


15. 제일 아래로 이동하여 아래와 같이 입력한다. 주의할 점은 PATH 부분이다. 기존의 PATH 에 새로운 경로를 입력한다.


16. 새롭게 추가된 환경변수가 적용되게 하려면 다시 로그인을 해야 하지만 바로 source 명령으로 적용하자.

source /etc/profile


17. mysqld 서비스가 시스템이 재부팅되어도 자동으로 실행하게 하자. 그러기 위해 mysql.server 파일을 /etc/init.d 디렉토리에 mysqld 의 이름으로 복사한다.

cp share/mysql/mysql.server /etc/init.d/mysqld



18. chkconfig 에 등록하여 자동으로 서비스가 올라오게 하자.

chkconfig --add mysqld
chkconfig --list | grep mysqld


19. 모든 작업은 끝났다. 서비스를 시작하자. 위의 12번 항목과 달리 mysqld 라는 이름으로 시작하면 된다. 서비스가 정상적으로 올라오면 OK 글자가 나타난다.

/etc/init.d/mysqld start


20. MySQL 서버에 로그인하자. 그냥 mysql 명령으로 들어왔다. 로그인 계정을 넣지도 않고 패스워드도 넣지 않았는데, 로그인이 됐다. 큰일이다. 보안에 큰 구멍이 뚫린거다.

mysql


21. 일단 가장 중요한 계정인 root 계정의 패스워드 부터 지정하자. 여기서의 root 계정은 리눅스의 관리자 계정이 아니라 MySQL 서버의 관리자 계정을 의미한다. MySQL 관리자 계정 root 의 패스워드를 설정하기 위해 mysqladmin 을 실행하고 계정명은 root 변경할 패스워드는 P@ssw0rd 물론 여러분들은 각자 필요한 패스워드를 넣으면 된다.

mysqladmin -u root password 패스워드


22. 이제 root 계정으로 로그인해 보자. 패스워드를 넣지 않아 로그인에 실패한다.

mysql -u root


23. root 의 계정으로 로그인하기 위해서는 -p 옵션이 필요하다. 그리고 지정된 패스워드를 넣으면 된다.

mysql -u root -p
Enter password :


24. 현재 MySQL 서버에 기본적으로 등록되어있는 유저와 호스트 그리고 패스워드의 목록을 보자. 아래의 그림과 같이 root 계정은 방금 패스워드를 생성했고, 유저의 이름이 공백 즉 anonymous 계정이 있는 것을 알 수 있다. 참고로 MySQL 에서 SQL문을 사용할 때에는 반드시 문장의 마지막에 ;(세미콜론)을 넣어야 한다.

mysql>SELECT user, host, password FROM mysql.user;



25. 그렇다면 anonymous 계정을 삭제해야 하지 않겠는가?  위의 20번 항목에서처럼 그냥 계정없이 로그인한다면 보안에 치명타를 입을 것이다. 아래의 명령을 처리하여 anonymous 계정을 삭제하자.

mysql>DELETE FROM mysql.user WHERE user='';



26. 마지막으로 다시 계정들을 확인해 보자. 더이상 anonymous 계정이 없는 것을 확인하자.


이상으로 기나긴 MySQL 소스 컴파일 설치를 모두 마치겠다. 굳이 힘들게 설치해봤다. 그렇다면 자신감이 생기지 않는가? 강의끝.
Posted by 꿈이 있는 자유
2010/08/07 11:26
바로 전의 글에서 MySQL 을 Windows7 에 설치했다. 하지만 역시 MySQL 은 Linux 와 가장 잘 맞는다. 필자 역시 선호한다. 전의 글에서 밝혔듯이 필자의 의도는 MySQL 서버는 Linux 에서 실행되고 MySQL 클라이언트는 Windows 에서 수행하려 한다.
리눅스에  설치하는 방법은 역시 3가지가 있다. 첫째는 yum 으로 편리(?)하게 설치하는 것이고, 둘째는 rpm 으로 설치하는 것이며, 마지막으로는 직접 Source 컴파일해서 설치하는 것이다. 이번 글에서는 yum 으로 부담없이 설치하는 방법을 설명하고자 한다.

1. 먼저, root 계정으로 switch 하자.


2. MySQL 데본 서비스(mysqld) 를 실행할 계정을 생성한다. 계정의 이름은 mysql이다. 그러기 위해서 먼저 /etc/passwd 파일에서 혹시 mysql 계정이 있는지 확인한다.

useradd -M -s /bin/false mysql

-M 의 옵션은 계정을 만들되 이 계정은 /home 에 홈 디렉토리를 생성하지 않겠다는 의미이며,
-s 의 옵션은 사용자 쉘을 지정한다는 의미인데, 이 사용자는 보안을 위해서 쉘 로그인을 하지 않을 것이기 때문에 false로 로그인쉘을 지정했다.


3. 혹시 mysql-server 가 설치돼있는지 검사한다. 쉘 프롬프트가 아무 내용이 없는 걸 보니 mysql-server 가 설치돼있지 않은 것을 알 수 있다.


4. yum 으로 install 하자.

yum -y install mysql-server


5. 간단하게 설치가 끝났다. 3개의 파일이 함께 설치됐다.


6. 설치가 모두 끝나면 MySQL 은 아래의 그림처럼 /usr/share/mysql 에 필요한 파일들이 위치해 있게 된다. 물론 아직 기본 데이타베이스는 설치돼있지 않다.


7. 위의 2번 항목에서 생성한 mysql 계정을 확인해봤다.


8. mysqld 서비스를 시작하자. 제일 처음 mysqld 서비스를 시작하면 데이타베이스가 설치된다.

/etc/rc.d/init.d/mysqld start


9. mysqld 서비스가 성공적으로 시작됐다.


10. 프로세스 목록에서 확인해봤다. 아래 그림에 보면 현재 MySQL 서버의 데이타베이스의 위치는 /var/lib/mysql 임을 알 수 있다. 또한 MySQL 서버의 명령어들이 들어있는 bin 디렉토리는 /usr/bin 에 위치해 있음을 알 수 있다. 반드시 기억해야 한다.

ps -ef | grep mysqld


11. 부팅할 때 자동으로 mysqld 서비스가 시작되도록 설정하자.

chkconfig mysqld on


12. root 계정으로 로그인했다. 패스워드를 넣지 않아도 로그인 된다. 큰일이다. 보안에 치명적이다. 아직까지 root 패스워드를 지정한 적이 없기 때문이다. 여기서의 root 는 리눅스의 관리자인 root 가 아니라 MySQL 서버의 root 계정을 의미한다.

shell>mysql -u root


13. 그래서 설치하고 나서 제일 먼저 해야할 일은 root 의 패스워드부터 설정하는 것이다.
현재 MySQL 서버의 계정을 뽑아봤다. mysql 데이타베이스의 user 라는 테이블에서 유저, 호스트명, 그리고 패스워드를 뽑았다. 역시 root 의 패스워드가 없다. 중요한 것은 MySQL 은 반드시 명령의 끝에는 ';(세미콜론)'을 넣어야 한다.

mysql>SELECT user, host, password FROM mysql.user;


14. 일단 exit 명령으로 MySQL 을 나온다.

mysql>exit
Bye

15. MySQL 을 설치하면 bin 디렉토리가 /usr/bin 에 있다. 여기서 mysqladmin 명령으로 root 계정의 패스워드를 설정하자. 패스워드는 여러분들이 각자 생성하기로 하고, 필자는 root 의 패스워드를 P@ssword 로 설정했다. 다시 설명하지만 여기서의 root 는 리눅스의 관리자 계정인 root 가 아니라 MySQL 의 관리자 계정을 말하는 것이다.

/usr/bin/mysqladmin -u root password 패스워드


16. root 계정으로 MySQL 로그인했다. 아까처럼 패스워드를 넣지 않았다. 그랬더니 역시 로그인할 수 없다. 패스워드를 넣지 않았기 때문이다.

shell>mysql -u root


17. root 계정이 패스워드와 함께 로그인하기 위해서 반드시 -p 옵션을 넣어야 한다. 그리고 패스워드를 입력해야 한다.

shell>mysql -u root -p
Enter password : 패스워드


18. 다시 MySQL 계정들을 확인해 봤다. 그랬더니 root 계정은 패스워드가 설정돼있는 것을 알 수 있다.

mysql>SELECT user, host, password FROM mysql.user;


19. 마지막으로 중요한 부분이 있다. 위의 그램에 보다시피 user 의 이름이 없는 것이 있다. 이른바 anonymous 계정인데, 역시 보안을 위해서 제거해야 한다.

mysql>DELETE FROM mysql.user WHERE user='';

mysql 데이타베이스의 user 테이블에서 user 의 이름이 공백인 계정 즉 anonymous 를 삭제하라는 명령이다. 삭제 후 다시 계정들을 확인하면 anonymous 계정이 삭제돼있는 것을 확인할 수 있다.

mysql>SELECT user, host, password FROM mysql.user;


이상으로 Linux Fedora 에서 yum 으로 MySQL 설치와 환경설정하는 것을 설명했다. 반드시 해 보시길...
Posted by 꿈이 있는 자유
2010/08/07 10:34
MySQL은 LAMP 의 한 프로그램으로서 Linuxer 뿐만 아니라 웹프로그래머에게 있어서 반드시 알고 있어야 할 데이타베이스 서버이다. 필자가 알고 있기로 웹 디비서버에서는 따라올 라이벌이 없는 절대강자로 알고 있다. Oracle 조차도... 물론, 지금은 MySQL 이 SUN 에 인수되었고, 또한 SUN 이 Oracle 에게 인수됨으로써 결국 Oracle 에서 MySQL 도 출시하고 있지만, 데이타베이스 서버 마켓쉐어에서 빅4 내지는 빅3의 위치를 차지하고 있다.
MySQL의 장점 중 하나는 플랫폼 독립적이라는 것이다. MSSQL-Server 가 Windows 운영체제에서만 설치된다는 약점과 비교해서 MySQL 은 Oracle 처럼 여러 플랫폼에서 설치 및 운영이 가능하다. 이번 글에서는 MySQL 서버를 Windows 그 중에서 가장 최신 운영체제인 Windows7에 설치해보자.

1. 먼저, MySQL 사이트를 방문해보자. [DOWNLOAD] 링크를 클릭한다.



2. MySQL Community Server 사이트로로 들어왔다. 바로 http://www.mysql.com/downloads/mysql 로 들어와도 된다.


3. 필자가 글을 쓰고 있는 현재 가장 최신안정버전은 5.1.49 이다. [Select Platform] 목록에서 [Microsoft Windows] 를 선택한다.


4. 현재 Windows 환경에서 다운로드 할 수 있는 프로그램은 7가지다. 일단 3가지 옵션이 있는데... 첫째는 32bit vs 64bit. 둘째는 msi 설치파일 vs zip 압축파일. 셋째는 recommended 버전 vs full 버전.
첫째와 둘째는 별로 어렵지 않게 선택할 수 있겠는데, 세번째가 고민된다. 105.9MB 짜리 파일을 다운받을 건지, 아니면 38.9MB 짜리 파일을 다운 받을 건지 고민된다.
full 버전에는 recommended 버전과 달리 몇가지가 추가로 들어가있는데, Test Suite, Embedded Server 그리고 Scripts 와 Examples 가 추가적으로 들어있다. 이 파일들을 필요하면 full 버전을 다운받으면 된다.
보통은 recommended 버전을 다운받는다. 하지만 필자는 일부러 full 버전을 다운받겠다. [Windows(x86,32-bit), MSI Installer] 의 [Download] 버튼을 클릭한다.


5. 등록된 계정으로 로그인해서 다운받으란다. 하지만, 계정을 등록하지 않아도 다운받을 수 있다. 아래쪽의 [No thanks, just take to the downloads!] 링크를 클릭한다. 이래서 난 MySQL 이 좋다. 굳이 등록을 하지 않아도 다운받을 수 있으니까...^-^


6. 다운받을 수 있는 Mirror 사이트들 목록이 나온다. 한국에서는 [경희대학교 리눅스 사용자 그룹]만 보인다. 안타깝다. 다른 나라에 비해서 한국의 Linux 마켓쉐어는 너무 작다. 한국의 IT 사이즈에 비해서도 너무 작다. 지나치게 Oracle 이나 MSSQL-Server 를 신뢰하는 것 같아서 더더욱 안타깝다. [경희대학교 리눅스 사용자 그룹]의 [http] 링크를 클릭한다. 만일 다운로드 속도가 너무 떨어지면 일본이나 기타 다른 나라 링크를 클릭해서 된다. 어짜피 영문버전으로 설치되고 중간에 기본 charset 을 변경할 수 있으니까 상관없다.


7. 다운 받을 파일의 이름을 확인하고 [Save] 버튼을 눌러 저장하자.


8. 다운로드가 끝났다. 필자는 보통 C 드라이브(단일드라이브일때) 혹은 D 드라이브(듀얼드라이브일때) 의 Downloads 라는 폴더를 생성하고 그 폴더에 다운받는다. 다운받은 파일을 더블클릭하여 실행하자.


9. 정말 실행할 건지 물어온다. [Run] 버튼을 클릭하여 실행하자.


10. 지금부터 본격적으로 설치과정이다. MySQL 설치 위자드로 들어왔다. [Next] 버튼 클릭.


11. [Setup Type]을 선택해야 한다. 보통은 [Typical] 을 선택한다. 필자는 [Custom ] 을 선택했다.[Next] 버튼 클릭.


12. 필자가 [Custom] 을 선택한 이유는 아래의 그림처럼 설치 컴포넌트를 선택할 수 있기 때문이다. 필자는 Full 버전을 다운받았기 때문에 recommended 버전과 달리 [Developer Components] 아래 3가지가 추가적으로 들어있다는 것을 볼 수 있다. 그냥 recommended 버전을 설치하면 된다. 필자는 아래 그림을 보기 위해서 일부러 Full 버전을 다운 받았다. 아무 이유없다. 어짜피 필자는 데이타베이스 서버로 사용할 MySQL 은 Linux 에 설치할 것이고, MySQL 클라이언트 툴은 Windows 에 설치할 것이다. [Next] 버튼을 클릭한다.


13. 설치요약정보다. 확인 후 [Install] 버튼을 클릭한다.


14. Windows7 이나 Windows Vista 에서는 UAC(User Account Control) 을 사용하기 때문에 한번 더 물어온다. Windows XP 는 그런거 없다. [Yes] 버튼 클릭.


15. 설치 중이다.


16. 광고도 한다. MySQL 서버는 GPL 라이센스로 사용할 수 있는 Community Version 과 상용버전인 Enterprise Version 이 있다. 기술지원을 받으려면 당연히 상용버전을 구매해야 한다. [Next] 버튼 클릭.


17. 역시 광고다. MySQL 데이타베이스 서버 DBA 가 관심갖을 만한 광고다. [Next] 버튼 클릭.


18. 설치과정은 여기까지다. [Finish] 버튼을 클릭하면 환경설정과정으로 넘어간다. 그러기 위해서는 반드시 [Configure the MySQL Server now] 체크박스가 체크되어있어야 한다. 확인하고 [Finish] 버튼을 클릭하여 설치과정을 마치자.


19. 또 UAC다. [Yes] 버튼을 클릭한다.


20. MySQL 환경설정 위자드다. 지금부터가 중요하다. [Next] 버튼을 클릭하여 환경설정으로 들어가자.


21. [MySQL Server Instance Configuration] 설정창이다. [Detailed Configuration] 을 선택한다. 영어권 국가에서는 [Standard Configuration] 을 선택해도 된다. 그러면 기본값을 가지고 환경설정을 하게 된다. 하지만, 한국어를 사용하거나 기타 Unicode 를 사용하는 국가에서는 charset 도 설정해야 하기 때문에 [Detailed Configuration] 를 선택해야 한다. [Next ] 버튼 클릭.


22. 설치할 머쉰이 데이타베이스 전용이면 모를까 그렇지 않으면 그냥 [Developer Machine] 를 선택한다. [Next] 버튼 클릭.


23. 보통은 [Multifunctional Database]를 선택한다. [Next] 버튼 클릭.


24. 필자는 C드라이브 단일드라이브이다. 그래서 데이타베이스의 데이타 부분이 설치될 곳을 C 드라이브에 지정했다. 프로그램은 C 드라이브에 설치하고, 보안을 위해서 데이타는 D 드라이브에 설치하는 것이 좋다. [Next] 버튼 클릭.


25. MySQL 데이타베이스 서버에 커넥션 갯수가 20개이하이면 [Decision Support (DSS)/OLAP] 를 선택한다. 보통 개발자용으로 설치하면 이걸 선택한다. 하지만 설치목적이 데이타베이스 전용일 경우에는 [Online Transaction Processing (OLTP)] 를 선택한다. [Next] 버튼 클릭한다.


26. 데이타베이스 서버에 TCP/IP로 클라이언트가 연결하기 때문에 [Enable TCP/IP Networking] 을 선택한다(기본선택). 그리고 MySQL 은 포트번호를 3306 을 사용한다. 혹 firewall 에서 포트를 열어주려면 [Add firewall exception for this port] 체크박스를 체크한다. 또한 SQL mode 를 Strict Mode 로 설정하려면 [Enable Strict Mode] 체크박스를 체크한다. 체크하는 것이 권장사항이다. [Next] 버튼 클릭한다.


27. 데이타베이스가 처리해야 할 데이타가 영어만 사용한다면 [Standard Character Set] 을 선택하면 된다. 하지만, 한국어, 일본어, 중국어 같은 Unicode 를 사용하기 위해서는 [Best Support For Multilingualism] 을 선택한다. 한국어를 기본 charset 으로 선택하려면 [Manual Selected Default Character Set / Collation] 을 선택한다. [Character Set] 목록에서 latin1euckr 로 변경한다.


28. [Character Set] 목록에서 기본값 latin1euckr 로 변경한다. 선택하고 [Next] 버튼을 클릭한다.


29. Window 에서 설치하면 정말 편한 것 중에 하나는 Windows 서비스에 자동으로 올라간다는 거다. 그러기 위해 아래 그림처럼 [Install As Windows Service] 체크박스를 체크한다. 그리고 머쉰이 부팅할 때마다 자동으로 서비스가 시작하게 하려면 [Launch the MySQL Server automatically] 체크박스 역시 체크한다.
MySQL 프로그램이 설치되는 기본위치는 매우 복잡하다. 그래서 PATH 를 설정할 필요가 있는데, [Include Bin Directory in Windows PATH] 체크박스를 체크하면 PATH 또한 설정해 준다. 편하다...[Next] 버튼을 클릭한다.


30. MySQL 서버를 설치할 때 결코 빼먹지 말아야 할 부분이다. 반드시 root 패스워드를 지정해야 한다. 그렇지 않으면 당연히 심각한 문제가 발생할 수 있다. 왜냐하면 MySQL 프로그램의 관리자가 root 이기 때문이다. [Modify Security Settings] 체크박스가 선택되어있는지 확인하고, root 의 패스워드를 지정한다.원격지 즉 다른 머쉰에서 root 사용자로 로그인하게 하려면 [Enable root access from remote machines] 체크박스를 체크한다. 보안을 위해서는 별로 권장하고 싶지 않다. 그리고 또한 Anonymous 는 사용하지 않기로 한다. [Next] 버튼을 클릭한다.


31. 이제까지 설정한 환경설정을 프로그램과 머쉰에 반영하는 부분이다. [Execute] 버튼을 클릭하여 반영하자. 이 부분에서 Error 가 발생할 수도 있다. 특히 마지막 옵션인 [Apply security settings] 부분에서 Error 가 발생하면 MySQL 을 완전히 지우고 다시 설치해야 한다.


32. [Finish] 버튼을 클릭하여 환경설정을 마치자.


33. 설치와 환경설정이 끝나면 마지막 단계로 확인단계이다. 먼저, Windows 서비스 목록을 확인한다. 현재 자동으로 [MySQL] 서비스가 올라와있고, 시작돼있고, [Startup Type]을 보니 부팅시 자동으로 서비스가 시작되게 돼있다.


34. root 계정으로 MySQL 에 로그인해보자. 환경설정때 지정한 패스워드를 입력해서 로그인해야 한다. PATH 가 잡혀있기 때문에 굳이 아래 그림처럼 복잡하게 설치 디렉토리로 이동하지 않아도 된다. 중요한 것은 로그인 할 때 계정과 패스워드를 입력해야 한다는 것이다.

shell>mysql -u 계정명 -p
Enter password:패스워드입력



35. 현재 MySQL 서버는 기본적으로 3개의 데이타베이스가 설치돼있는 것을 확인할 수 있다.


36. mysql 데이타베이스에있는 테이블 목록이다. 이중에서 중요한 테이블은 user 테이블이다. 왜냐하면 MySQL 서버에 로그인할 계정과 패스워드가 저장되어 있기 때문이다.


이상으로 Windows 에서 MySQL 서버 설치하는 것을 설명했다. 환경설정 몇 부분을 빼면 별로 어렵지 않다. 여러분들도 한번 설치해 보기 바란다.
Posted by 꿈이 있는 자유