MySQL 3.22.21 설치 가이드(1999/04/16) - 정종갑(hipon@kitel.co.kr) ------------------------------------------------------------------------- 1. 들어가기 전에.. ----------------- % 이 문서는 MySQL에 있는 영문 Install 문서를 바탕으로 제작되었습니다. % 보다 자세한 사항은 MySQL홈페이지를 방문하시거나, 프로그램 소스의 % Install 류의 파일을 참조하시기 바랍니다. % 프로그램을 설치하거나 실행할때 중요한건 프로그램을 만든 제작자가 프로그램에 함께 넣어준 문서 즉, README파일을 읽어보는 것입니다. % 이 문서는 MySQL의 기본적인 설치 및 한글사용법, 그리고 먼저 설치해 본 필자가 전하고 싶은 팁이 주된 내용으로 구성되어 있습니다. % 그러므로, 이 문서 보다 자세한 정보를 알고 싶으시면 함께 포함되어 있는 REAME 종류의 파일을 함께 읽어 볼것을 적극 권합니다. % 이 문서는 편의상 경어를 생략했습니다. 이점 양해바랍니다. 1.1 필자 설치 Hardware 정보 (아래는 필자의 경우이고, MySQL은 리눅스가 설치되는 386이상의 컴퓨터이면 설치가능하다.) Computer : SAMSUNG Magic Station M6000 CPU : Intel Pentium II 300 Mhz (512KB Internal Cache) RAM : SAMSUNG SDRAM 64MB VIDEO : ATI 3D Rage Pro (Korean) - AGP 4MB SOUND : ESS ES1689 AudioDrive at 0x220 irq 5 dma 1,5 MOUSE : Microsoft IntelliMouseSEJIN PS/2 type FDD : SAMSUNG 3.5" 1.44MB HDD : FUJITSU MPC3043AT, 4125MB, CHS=525/255/63, UDMA :... WINDOWS 98 SAMSUNG WN310820A (1.08GB), 1030MB, CHS=523/64/63, DMA :... LINUX CDROM : SAMSUNG CD-ROM SCR-3232 VM103, ATAPI 32X CDROM drive NETWORK : 3COM 3c900b TPO , IRQ 3 MODEM : SAMSUNG LTV90 (56Kbps) MONITOR : SAMSUNG 17" Magic Monitor, CKG7507L(D), :... Syncmaster 700M(s) 1.2 필자 설치 Software 정보 OS : ALzzA RedHat Linux 5.2 (Kernel 2.2.5) XFree86 : XFree86-3.3.3.1-3kr Netscape : Netscape-4.0.8-2kr glibc : glibc-2.0.7-29 Webserver : Apache-1.3.4-1kr PHP : PHP3-3.0.6-2 flex : flex-2.5.4a-4 Database : MySQL 3.22.21 ; 참고로 필자는 Apache + PHP + MySQL 연동해서 작업한다. ; 알짜 레드햇 5.2 사용자라면 Apache와 PHP가 기본으로 설치되어 있고, MySQL 홈페이지에서 MySQL rpm버전을 받아서 설치하면 바로 사용이 가능하다. ; 특히 PHP는 MySQL과 PostgreSQL을 연동가능하게끔 Aphache 서버에 모듈화 되어있다. ; 그러므로 MySQL이나 PostgreSQL을 이용하여 데이터베이스를 구축 하려는 이용자는 Apache나 PHP를 다시 설치할 필요가 없이 그대로 사용하면 되고, 데이타베이스(MySQL)만 설치 또는 업그레이드 해준다. 1.3 설치 요구사항 (본 가이드는 리눅스를 기준으로 설명한다.) 압축 툴 : GNU gunzip GNU tar 컴파일러 : ANSI C++ compiler. gcc 2.8.1 이상, egcs 1.0.2 이상 gcc 2.7.x 버전은 버그가 있으므로 MySQL을 설치하기 위해서는 꼭 2.8.x 버전으로 업그레이드하자. %% 매우 중요하므로 버전확인을 꼭 하자. Make 툴 : GNU make 3.75 이상 1.4 RPM 설치 레드햇 리눅스 사용자라면 RPM으로 설치할 수 있다. 1.4.1 RPM 가져오기 http://www.mysql.com에서 최신버전(3.22.21)을 가져온다. 홈페이지에 보면 여러개의 rpm이 있는데, 그중에서 Binary RPM containing the server for i386 machines. Binary RPM containing client programs for i386 machines. Binary RPM containing include files and libraries for development for i386 machines 이 세가지를 다운로드 한다. 혹시 벤치마크자료도 필요한다면 (사실 이건 필요없음) Binary RPM containing benchmarks/tests using Perl DBI for i386 machines. 이것도 다운로드한다. 1.4.2 RPM 설치 위 세가지를 차례로 설치한다. shell> rpm -Uvh MySQL-3.22.21-1.i386.rpm shell> rpm -Uvh MySQL-client-3.22.21-1.i386.rpm shell> rpm -Uvh MySQL-devel-3.22.21-1.i386.rpm 벤치마크가 필요하면 벤치마크도 설치. 1.4.3 설치 끝 RPM은 이렇게 간단하게 프로그램을 설치할 수 있다. 그러나, 좀더 고급적인 사양을 원하거나 DBMS를 최적화 하거나.. 한글 메세지와 한글 테이블을 사용하고자 한다면.. 소스를 받아서 설치해야만 한다. 2. 설치 시작 ------------ 2.1 MySQL 최신버전 가져오기 홈페이지 : http://www.mysql.com 현재까지(1999/04/16) 최신버전 : 3.22.21 2.2 모든 설치는 root 계정으로.. 2.3 가져온 소스 풀기 shell> gunzip < mysql-3.22.21.tar.gz | tar xvf - 또는 GNU tar 라면, 아래와 같이 해보자. shell> tar xzvf mysql-3.22.21.tar.gz RPM 소스를 가져왔다면.. shell> rpm -Uvh MySQL-3.22.21-1.src.rpm 2.4 생성된 디렉토리로 이동 shell> cd mysql-3.22.21 2.5 환경설정을 한다. (대부분은 환경설정 없이 그냥 해도 무리가 없다. 다만, 한글을 사용하고자 할때는 한글관련 옵션 참조) shell> ./configure 또는 한글을 지원하려면 shell> ./configure --with-charset=euc_kr ** 환경설정 옵션 자세한 환경설정이 필요하다면, 아래와 같이 해본다. shell> ./configure --help 이제 옵션에 대해서 하나하나 살펴보자. (한글사용법도 있으니 조목조목 살펴본다.) 2.5.1 클라이언트 프로그램만으로 사용할 때 (서버 기능없이 클라이언트로만 사용할 때) shell> ./configure --without-server 2.5.2 설치디렉토리를 변경하고자 할 때 (설치 스크립트가 기본적으로 설치하는 디렉토리가 아닌 사용자가 디렉토리를 바꾸고자 할때 사용 기본적으로 '/usr/local'에 프로그램이 설치되고 '/usr/local/var'에 데이타베이스파일이 남는다.) shell> ./configure --prefix=/usr/local/mysql ==> 기본 설치디렉토리를 '/usr/local/mysql'로 변경 shell> ./configure --prefix=/usr/local \ --localstatedir=/usr/local/mysql/data ==> 기본 설치디렉토리를 '/usr/local'로 하고, 데이타베이스 디렉토리를 '/usr/local/mysql/data'로 변경 2.5.3 소켓 디렉토리 변경 (기본값은 `/tmp' or `/var/run') shell> ./configure --with-unix-socket-path=/path/to/socket/dir ==> `/path/to/socket/dir' 반드시 절대경로이어야 한다. 2.5.4 compile statically-linked (정적적으로 프로그램을 컴파일) shell> ./configure --with-client-ldflags=-all-static \ --with-mysqld-ldflags=-all-static 2.5.5 libg++ 이나 libstdc++이 없이 gcc만 사용할때 shell> CC=gcc CXX=gcc ./configure 2.5.6 'DEFAULT' 필드를 사용하지 않도록 하려면 shell> CXXFLAGS=-DDONT_USE_DEFAULT_FIELDS ./configure 2.5.7 다국어 지원 (한글 지원 필독) MySQL은 기본적으로 charset이 ISO-8859-1(Latin1) 이다. 다국어를 지원하려면 charset옵션을 사용한다. 특히, 한국어 지원코드는 EUC_KR이다. shell> ./configure --with-charset=CHARSET shell> ./configure --with-charset=euc_kr ==> 메세지 및 데이타베이스, 필드 한글 사용 ** CHARSET 지원코드 `CHARSET' may be one of `big5', `cp1251', `cp1257', `czech', `danish',`dec8', `dos', `euc_kr', `german1', `hebrew', `hp8', `hungarian', `koi8_ru', `koi8_ukr', `latin1', `latin2', `sjis', `swe7', `tis620', `ujis', `usa7', `win1251' or `win1251ukr'. * character set설정한 다음 다시 변경하려면 아래와 같은 명령을 준 다음 './configure' 를 다시 실행한다. shell> make distclean * 서버와 클라이언트간에 characters를 변경하려면 `SET OPTION CHARACTER SET' 2.5.8 디버깅코드 옵션 shell> ./configure --with-debug 2.5.9 강제로 MIT-pthreads를 실행할때 shell> ./configure --with-mit-threads 2.6 만약 환경설정에 문제가 있다면 shell> rm config.cache shell> make clean 위 두분장을 실행하거나 또는 다음과 같이 한다. shell> make distclean 그리고 나서 환경설정을 새로한다. 2.7 컴파일한다. (반드시 root로 할것!) shell> make 컴파일시 `sql_yacc.cc' 부분에서 다음과 같은 에러가 난다면 Internal compiler error: program cc1plus got fatal signal 11 or Out of virtual memory or Virtual memory exhausted 이 문제는 'gcc'가 huge amouts 메모리를 요구하기 때문이다. 이럴때는 환경설정에서 다음과 같은 옵션을 주고 다시 컴파일 한다. shell> ./configure --with-low-memory %% 여기에서 윗부분에서 설명한거와 같이 현재버전의 MySQL은 gcc 컴파일러 버전이 반드시 2.8.x 이상이어야 한다. 2.7.x 버전이라면, 반드시 업그레이드 한다. 확인은 gcc --version으로 할 수 있다. shell> gcc --version 2.8.x %% 만약 2.7.x 버전대의 gcc 컴파일러를 사용한다면 make할때.. 'no target'이라는 에러메세지가 날 것이다.. 이건 물론 ./configure가 적절히 수행되지 않아서이다. 'no target' 이라는 에러는 Makefile이 존재하지 않을때 생긴다. ./configure 가 제대로 수행이 되어야만 Makefile이 생긴다. 다음은 gcc 2.7.x 버전대를 사용할때 ./configure 수행시 에러메세지이다. shell> gcc --version 2.7.2.3 shell> ./configure loading cache ./config.cache checking host system type... i586-pc-linux-gnu checking target system type... i586-pc-linux-gnu checking build system type... i586-pc-linux-gnu checking for a BSD compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking whether make sets ${MAKE}... yes checking for working aclocal... found checking for working autoconf... found checking for working automake... found checking for working autoheader... found checking for working makeinfo... found checking whether to enable maintainer-specific portions of Makefiles... no checking whether build environment is sane... yes checking whether make sets ${MAKE}... (cached) yes checking for gcc... gcc checking whether the C compiler (gcc ) works... yes checking whether the C compiler (gcc ) is a cross-compiler... no checking whether we are using GNU C... yes checking whether gcc accepts -g... yes checking for c++... no checking for g++... no checking for gcc... gcc checking whether the C++ compiler (gcc ) works... no configure: error: installation or configuration problem: C++ compiler cannot create executables. 혹시, 이것과 비슷한 메세지가 나오면 gcc 버전을 2.8.x 이상 사용한다. 2.8 인스톨을 한다. (역시 root로) shell> make install 2.9 Perl 지원 Perl `DBD'/`DBI' client code 는 Perl 5.004 이후 버전을 사용해야한다. Perl 관련 프로그램 세가지를 다운로드한다. ('Data-Dumper', 'DBI', 'Msql-Mysql-modules') 'Data-Dumper', 'DBI', 'Msql-Mysql-modules' 을 순서대로 설치한다. 2.9.1 우선 압축된 패키지를 푼다. shell> gunzip < Data-Dumper-VERSION.tar.gz | tar xvf - GNU tar를 사용한다면 shell> tar xzvf Data-Dumper-VERSION.tar.gz 이렇게 하면 `Data-Dumper-VERSION' 디렉토리가 생긴다. 2.9.2 생성된 디렉토리로 이동 shell> cd Data-Dumper-VERSION 2.9.3 컴파일 하고 설치 shell> perl Makefile.PL shell> make shell> make test shell> make install 2.9.4 테스트 make test는 특히 중요하다. 모든 모듈을 검증하기 때문이다. 2.9.5 나머지지 두개 패키지 설치 나머지 'DBI', 'Msql-Mysql-modules'를 위와 같은 방법으로 설치한다. 2.10 데이타베이스 설치 설치가 끝난후 아래와 같은 명령을 한번만 한다. shell> ./scripts/mysql_install_db 이 명령은 설치후 단 한번만 하는 명령으로 기초테이블 6개가 설치된다. (`user', `db', `host', `tables_priv', `columns_priv' and `func') 2.11 MySQL 서버 시작 우선 MySQL이 설치된 디렉토리로 이동한다. shell> cd mysql_installation_directory 그리고 나서 아래와 같은 명령을 준다. shell> bin/safe_mysqld & 2.12 에러 없이 실행되면.. 아래와 같은 명령을 내려서 설치된 프로그램을 검증해 본다. (앞으로 BINDIR 이란 MySQL이 설치된 디렉토리중 bin디렉토리를 말함 예를 들어 MySQL이 '/usr/local'에 설치치되었다면 BINDIR은 '/usr/local/bin'이 된다.) 설치된 MySQL의 버전을 알아본다. (MySQL의 설치된 디렉토리에서 bin 디렉토리에 있는 'mysqladmin' 실행) shell> BINDIR/mysqladmin version 그러면 아래와 비슷한 화면이 나올 것이다. mysqladmin Ver 6.3 Distrib 3.22.21-1, for pc-linux-gnu on i686 TCX Datakonsult AB, by Monty Server version 3.22.21-1 Protocol version 10 Connection Localhost via UNIX socket TCP port 3306 UNIX socket /tmp/mysql.sock Uptime: 16 sec Running threads: 1 Questions: 20 Reloads: 2 Open tables: 3 그리고 다래와 같은 명령도 한번 해본다. shell> BINDIR/mysqladmin variables 2.13 MySQL 서버를 중지해 본다. shell> BINDIR/mysqladmin -u root shutdown 2.14 safe_mysqld로 서버를 재시작해본다. shell> BINDIR/safe_mysqld --log & 2.15 간단한 데이타베이스 테스트를 한다. 아래와 같은 명령을 해본다. shell> BINDIR/mysqlshow +-----------+ | Databases | +-----------+ | mysql | +-----------+ shell> BINDIR/mysqlshow mysql Database: mysql +--------------+ | Tables | +--------------+ | columns_priv | | db | | func | | host | | tables_priv | | user | +--------------+ shell> BINDIR/mysql -e "select host,db,user from db" mysql +------+--------+------+ | host | db | user | +------+--------+------+ | % | test | | | % | test_% | | +------+--------+------+ 2.16 벤치마크 테스트를 해본다. (옵션) 벤치마크에 관심이 있는 사람은 다음과 같은 명령어로 테스트 해보자. shell> cd sql-bench shell> run-all-tests 만약에 sql-bench 디렉토리가 없다면, rpm 패키지를 이용해보자. (mysql홈페이지에서 구할 수 있다.) 2.17 자동으로 MySQL 서버 시작과 종료 MySQL 서버의 start와 stop argument로 시작과 종료를 할 수 있다. shell> mysql.server start shell> mysql.server stop 부팅과 동시에 MySQL 서버를 시작하려면 레드햇 리눅스의 경우 `/etc/rc.d/rc.local' 파일에 아래와 같이 한줄을 삽입한다. (디렉토리를 설치된 디렉토리를 정확히 적어준다.) /bin/sh -c 'cd /usr/local/mysql ; ./bin/safe_mysqld &' 또한, mysql.server를 사용하여.. mysql.server start & mysql.server 가 실행되면 두개의 프로세서가 실행됩니다. (디렉토리는 설치경로에 따라 달라질 수 있습니다) /usr/bin/safe_mysqld /usr/bin/libexec/mysqld * 한글 사용 팁 (mysql.server 파일을 수정하므로써 별다른 옵션없이 한글을 사용 할 수 있다. 이 경우 2.18절의 한글 사용법은 건너뛴다.) mysql.server를 vi 에디터 등으로 열어서 'mysqld' 를 실행시키는 부분을 모두 찾아서 'mysqld --language=korean' 로 바꿔준다. 아마 2~3 군데 쯤 될것이다. 2.18 MySQL 서버 옵션 MySQL 서버는 다음 세가지 디렉토리에 옵션을 적어줄 수 있다. *디렉토리* *사용목적* `/etc/my.cnf' 글로벌 옵션 `DATADIR/my.cnf' 서버-스펙 옵션 `~/.my.cnf' 사용자-스펙 옵션 * 전형적으로 `/etc/my.cnf' 파일은 다음과 같다. [mysqld] datadir=/usr/local/mysql/var socket=/tmp/mysqld.sock port=3306 [mysql.server] user=mysql basedir=/usr/local/mysql `mysql.server' 스크립트는 `user', `datadir', `basedir', `bindir' and `pid-file' 의 변수를 가진다. * 파일 옵션 #주석 - 주석 라인은 `#' or `;' 로 시작한다. [group] - 옵션을 주고자하는 프로그램이나 그룹의 이름 option - 프로그램 실행시 --option 적을 내용 option=value - 프로그램 실행시 --option=value 적을 내용 set-variable = variable=value - 프로그램 실행시 --set-variable variable=value 에 적을 내용 * 전형적인 글로벌 옵션 파일 예 : [client] port=3306 socket=/tmp/mysql.sock [mysqld] port=3306 socket=/tmp/mysql.sock set-variable = key_buffer=16M set-variable = max_allowed_packet=1M [mysqldump] quick * 전형적인 사용자 옵션 파일 예 : [client] # The following password will be sent to all standard MySQL clients password=my_password [mysql] no-auto-rehash * 한글 메세지와 한글 필드등을 사용하려면.. (2.17에서 한글사용법을 했다면 아래 부분은 건너뜀) (./configure --with-charset=euc_kr 로 컴파일 했을경우) [myslqd] 셕션에 아래와 같은 한 줄을 넣는다. language=korean * 또는 mysqld 실행할때 옵션을 줘서 실행 mysql --langueage=korean 3. 컴파일 방법 요약 3.1 소스를 받아서 푼다. 3.2 생성된 디렉토리로 이동하여 아래 명령으로 환경설정을 한다. shell> ./configure 만약 한글 메세지나 필드를 사용하려면.. shell> ./configure --with-charset=euc_kr 3.3 컴파일 한다. shell> make 3.4 설치한다. shell> make install 3.5 데이타베이스 초기화 (처음 한번) shell> ./scripts/mysql_install_db 3.6 '/etc/rc.d/rc.local' 파일에 다음 한줄 삽입 (디렉토리는 설치시 설정에 따라 달라질 수 있다.) /usr/bin/mysql.server start & 3.7 한글 메러 메세지 및 한글 필드 사용 팁 mysql.server 파일을 열어서 다음 내용을 수정 (2~3군데 정도 됨) ==> 'mysqld' 부분을 mysqld --language=korean 또는, 옵션 설정파일 'my.cnf'에 다음 내용을 삽입 ==> [myslqd] 셕션에 아래와 같은 한 줄을 넣는다. language=korean 4. 추가적으로 할 일 ------------------- ; 질문이나 버그 혹은 피드백이 있으면, 우선 소스나 홈페이지상의 문서를 읽어보라. ; 또한, http://www.mysql.com 을 자주 방문하여 최신의 정보를 얻자. ; 이 문서는 MySQL의 사용법을 다룬 문서가 아니므로, 사용법은 HOW-TO 문서등을 참조 바란다. 5. 마치면서 ----------- ; 이상으로 모든 설치가 끝났습니다. ; MySQL과 함께 즐거운 리눅싱이 되길... ; 질문있으시면, 뉴스그룹에 포스팅하시거나, 각 동호회등에 질문하시면 실력있는 많은 분들이 도와주실 겁니다.