3.3. MiniSQL DBMS 설치
3.3.1. 다운로드하기
miniSQL을 상업적으로 사용하려면 miniSQL 홈페이지에 접속하여 License를 얻어야 합니다.
http://www.Hughes.com.au/
http://www.hughes.com.au/software/msql2/archive.htm
- 지나간 버전이 있는 곳
또는, 코눅스의 자료실에 가면 msql-2.0.11.tar.gz를 구할 수 있습니다.
3.3.2. 압축풀기
# cp msql-2.0.11.tar.gz /usr/local/src
# cd /usr/local/src
# tar xvfz msql-2.0.11.tar.gz
위와 같이 하면 아마도 msql-2.0.11 이라는 디렉토리가 생성될 것입니다.
3.3.3. 컴파일 및 설치하기
컴파일을 위한 준비
# cd msql-2.0.8
# make target
위와 같이 하면 자신이 운영하는 시스템에따라 각기 다른 디렉토리가 targets라는
디렉토리 밑에 생성된다. Linux 커널 버전에 따라 바뀔 것입니다.
리눅스 6.1일 경우에 아래와 같은 메세지가 출력되고, Linux-2.2.12-20kr2-i586
이라는 디렉토리가 생성되었을 것입니다.
Making target directory for Linux-2.2.12-20kr2-i586
Building directory tree.
Adding common
Adding conf
Adding lang-common
Adding lite
Adding makedepend
Adding makegen
Adding msql
Adding regexp
Adding tests
Adding tests/rtest.src
Adding w3-msql
Adding w3-msql/tests
Adding sym-links
............................................................................
Build of target directory for Linux-2.2.12-20kr2-i586 complete
# cd targets
# cd Linux-2.2.12-20kr2-1586
아래와 같이하면 컴파일 전에 시스템 점검을 해줍니다.
# ./setup
Starting configuration of mSQL 2.
checking for gcc
...생략...
Ready to build mSQL.
You may wish to check "site.mm" although the defaults should be
fine. When you're ready, type "make all" to build the software
컴파일 관련 파일 site.mm 설정하기.
- 컴파일과 설치 디렉터리에 관련된 부분이 정의되어 있는 곳입니다.
리눅스에서 여러분이 고칠 곳이라고는 INST_DIR 정도입니다.
일반적으로 /usr/local/Hughes 디렉터리아래 mSQL에 관련된 모든 파일이 위치합니다.
가급적 고치지 않는 것이 좋습니다.
자 이제 소스를 컴파일 하고 설치해 보겠습니다.
# make all
# make install
위와 같이 하면 컴파일과 설치가 완료됩니다.
설치는 /usr/local/Hughes/ 디렉터리하에 기본적으로 설치됩니다.
3.3.4. mSQL 설정하기
● /usr/local/Hughes/msql.conf 설정 파일
msql.conf 화일은 msql을 활용하는데 전반적인 config를 잡아주는 화일입니다.
3개의 섹션으로 구성되어있습니다.
[general]
Inst_Dir = /usr/local/Hughes
Inst_Dir은 mSQL 패키지가 설치된 디렉터리를 말한다. 나중에 %I 라는 특수한 매크로를 사용하면 바로 Inst_Dir을 지칭할 수 있습니다 (예, Pid_File, UNIX_Port 설정참고). 생략시 기본값은 /usr/local/Hughes 입니다.
mSQL_User = msql
mSQL_User 설정은 매우 중요합니다. 보통 통념상 msql이라는 사용자로 설정하는데 이 값에 따라 mSQL 패키지 디렉터리의 소유권을 변경해주어야 합니다.
Admin_User = msql
보통 데몬등의 가동이나 데이타베이스를 생성하고 삭제하는데 사용됩니다.
Pid_File = %I/msql2d.pid
TCP_Port = 1114
UNIX_Port = %I/msql2.sock
TCP_Port는 여러분이 정확한 개념을 숙지하고 있고 변경할 용의가 있는 사람만 바꾸기 바랍니다. mSQL은 1114번 포트를 사용하므로 root가 아닌 사용자가 데몬을 띄워 포트를 사용할 수 있습니다. msql2d라는 데몬은 msql이라는 사용자의 소유로 실행됩니다. UNIX_Port 또한 개념에 익숙지 않은 사람은 그대로 두기 바랍니다.
[system]
Msync_Timer = 30
mSQL은 빠른 데이터베이스 처리를 위해 메모리 맵(map)을 사용합니다. 메모리 상에서 처리함으로써 빈번하게 느린 디스크를 접근하지 않아 속도의 향상을 가져옵니다. 하지만 언제나 동기화(Sync)의 문제가 있기 마련입니다. 급작스런 시스템 다운에 의해 자료를 잃을 수 있기 때문입니다. Msync_Timer에서 지정한 값(초단위)마다 하드디스크에 저장하도록 합니다. 이 값을 0으로 부여하며 운영체계 커널에게 모든 일을 위임합니다.
Host_Lookup = True
Host_Lookup 값을 True로 정하면 호스트명 찾기에 실패한 경우 데이터베이스 접속을 거부하도록 합니다.
Read_Only = False
Read_Only는 매우 재미있는 부분입니다. 일반적으로 데이터베이스 갱신이 필요하므로 읽기 전용 속성은 False로 둡니다. 만약 이 값을 True로 설정하면 데이터베이스 서비스는 오로지 읽기만 허용합니다. 보통 여러 개의 mSQL 서버를 실행해 두고 하나만 읽기/쓰기를 행하고 나머지는 오로지 읽기만 수행하도록 설정할 때 유용합니다. 여러 개의 mSQL 서버를 실행할 때는 각각의 TCP 포트와 다른 설정 파일을 사용 하면됩니다.
클라이언트에서도 각자에게 필요한 서버에 접속합니다. 오로지 특정 네트워크에서만 자료 갱신을 하고 나머지는 보여주기 서비스만을 할 때 좋습니다. 이렇게 해두면 불의의 사고(크래커의 장난)로 데이터베이스가 망가지는 것을 약간은 막을 수 있을 것입니다.
Local_Access = True
Remote_Access = True
[w3-msql]
Auth_Host = NULL
Footer = True
Force_Private = False
생략
● msql.acl
mSQL을 설치하고 나면 /usr/local/Hughes 디렉터리에 msql.acl.sample 파일이 하나 생깁니다. 이 파일을 msql.acl이라는 이름으로 복사하여 적절하게 각 데이터 베이스에 대한 접근 권한을 부여합니다.
# cd /usr/local/Hughes
# cp msql.acl.sample msql.acl
각 데이터베이스 항목(database)에 대하여 어떤 사용자에게 읽기(read) 권한을 부여할 것인지, 쓰기(write) 권한을 부여할 것인지 간단히 적어주면 됩니다. 호스트(host)는 mSQL 데이터베이스를 사용할 권한을 부여받는 호스트들의 목록입니다.
접근옵션(access)은 지역적(local)인 유닉스 소켓 이용 또는 원격(remote) TCP/IP 접속이 있는데 특정 자료는 오로지 지역적 접속만을 허용해야 할 때가 있기 마련입니다.
예를 들자면, testdb이라는데이터베이스를
- cracker를 제외한 root, msql, jklee이라는 사용자에게만 읽기 권한을 주고
- 사용자들은 데이터베이스에 관하여 SELECT를 할 수 없게 하며,
- 쓰기 권한은 root에게만 주어집니다.
- test.com인 호스트를 제외한 모든 호스트에 대해 접근을 허용합니다.
- 지역적/원격 접속을 모두 허용합니다(access=local,remote).
database=testdb
read=root, msql, jklee,-cracker
write=root
host=*, -test.com
access=local, remote
mSQL 데이터베이스 관리자가 새로운 데이터베이스를 만들 때마다 이 파일에 적어줍니다. 명시되지 않은 데이터베이스는 일단 모두에 대하여 읽기/쓰기 등 모든 것을 기본적으로 허용한다고 간주합니다.
Warning : No ACL file. Using global read/write access.
msql.acl 파일이 없을 때 msql2d 데몬 실행 시 나오는 경고 메시지입니다. 이럴때는 간단히 msql.acl.sample화일을 msql.acl화일로 복사해서 쓰면됩니다. 그러나 msql,acl화일이 없어도 msql데몬을 돌리는데 하등의 문제는 없습니다. 다만 해커들의 장난을 조금이나마 차단할 수 있다는 장점이 있습니다. mSQL데몬 실행 중 ACL 설정 파일에 변경을 가한 경우에는 데이타 베이스를 재 실행해 주어야 합니다.
# msqladmin reload
3.3.5. msql 계정 만들기
# adduser msql
# cd /etc
# vi passwd
msql:*mWab...:502:502::/home/msql/:/bin/bash
msql이라는 사용자는 로그인할 필요 없으므로 /etc/passwd 필드의 암호 필드에 별표 문자(*)를 해두어도 좋습니다. 셰도우 시스템인 경우 /etc/shadow의 암호 필드를 수정합니다. 보통 root로 로그인한 후 su - msql 함으로써 msql 사용자로 잠시 전환하여 사용합니다.
/usr/local/Hughes 디렉터리는 바로 msql이라는 사용자의 소유여야 합니다.
루트 권한으로 다음과 같이 해주기 바랍니다.
# chown -R msql.msql /usr/local/Hughes
( 여기서 chown은 GNU 버전입니다 )
3.3.6. mSQL 시작하기
# su - msql
$ cd /usr/local/Hughes/bin
$ ./msql2d &
위와같이 입력하면,
Mini SQL Version 2.0 Production Release
Copyright (c) 1993-94 David J. Hughes
Copyright (c) 1995-97 Hughes Technologies Pty Ltd..
All rights reserved.
Loading configuration from '/usr/local/Hughes/msql.conf'.
Server process reconfigured to accept 200 connections.
Server running as user 'msql'.
Server mode is Read/Write.
가 나타나고, 아무일도 일어나지 않는데 그냥 엔터를 치면, 프롬프트가 나타납니다.
데몬을 실행할때에는 앰퍼센드(&) 문자 붙이는 것을 잊지 말기 바랍니다.
3.3.7. PHP에 포팅하기
MiniSQL(mSQL)을 설치하였으면, PHP에 포팅을 해야 PHP와 mSQL을 연동하는 웹 프로그램을 만들 수 있습니다. 그러므로 PHP설치 작업을 다시해야 합니다. 환경설정 파일을 수정할 필요는 없구요.
$ exit
# cd /usr/local/src/php-4.0b3
# cd php-4.0b3
# ./configure --with-apxs=/usr/local/httpd/bin/apxs --with-config-file-path=/usr/local/httpd --with-msql=/usr/local/Hughes
위의 명령을 계속 이어서 입력하면 됩니다.
# make
# make install
# cd /usr/local/httpd/bin
# ./apachectl stop(종료)
# ./apachectl start(시동)
PHP에서 제대로 인식되었는지 확인하려면 윈도우 98 이나 X-윈도우에서 웹브라우져(익스플러러, 넷스케이프)에서 URL에 http://ip_address/phpinfo.php or http://localhost/phpinfo.php 입력하시고 엔터을 입력하면 화면에 PHP 환경설정 정보가 나타나면 정상적으로 설치가 된 것입니다.
mSQL
Allow persistent links: Yes
Persistent links: 0/Unlimited
Total links: 0/Unlimited
<자료출저 : 영남대학교 김명호교수>
'DATABASE' 카테고리의 다른 글
[MYSQL] mysql c연동 (0) | 2011.10.16 |
---|---|
[MYSQL] C API (0) | 2011.10.16 |
[Tech Report] - Hybrid MM DBMS `ALTIBASE 4` (0) | 2011.10.16 |
MMDBMS의 활용가능 분야와 활용 방법 (0) | 2011.10.16 |
연재/하이브리드 MM DBMS (0) | 2011.10.16 |