[DB] Mysql 설치 가이드
MySQL 3.22.21 설치 가이드(1999/04/16) – 정종갑(hipon at 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으로 할 수 있다.
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과 함께 즐거운 리눅싱이 되길…