2013년 9월 18일 수요일

MYSQL 설치[SunOS]

목차
---------------------------------------------------------------------
1. 목적
2. 사전준비
3. MYSQL 서버 설치작업
4. OMP DB 생성 및 TABLE 생성 , 기타 환경작업
5. 맺음말
6. 참고자료
---------------------------------------------------------------------

1.목적
이 문서는 MYSQL 서버를 설치에 대한 가이드를 제공합니다.
일반적으로 이 문서 작성 기준은 SunOs 기준으로 되어 있습니다.
다른 OS에서 설치 방법은 다릅니다. 또한 이 방식 이외에도 설치 방법이 존재
합니다.

그러나 설치에서 가장 중요한 목적은 OMP 패키지를 정상적으로 잘 구동시키기 위한것
입니다. 그러므로 일반적인 설치 방법과 조금은 틀릴 수 있습니다.

2.사전준비
MYSQL를 설치 하기 위해서는 설치하는 서버의 Os Version , Processor 구조 및
Disk 파티션의 크기를 알아야 합니다. 그리고 mysql 서버를 32bit , 64bit 설치 할지
선택해야 합니다. 설치 파악해야 하는 정보 목록 및 준비 사항 목록
** 모든 설치는 root 권한이 필요합니다.

번호    항목                내용                        예          관련명령어
================================================================================
1   Os Version          설치하는 OS Version             SunOs5.9    uname
2   Processsor          sparc or x86                    sparc       uname
3   파티션크기          설치할 파티션                   /data       df -k
4   root계정권한        root 권한 획득                              su
5   Kernel 정보         Kernnel 32 | 64 bit여부         64bit       isainfo -kv
6   install mysql       mysql 설치 파일
7   gtar                이전 mysql 설치 필요한 tar                  gtar
8   client프로그램      HeidiSQL ,mysql Front
9   OMP_Schema파일      Table 생성을 위한 Schema 파일
10  환경설정파일        비슷한 환경에서 사용되는 설정파일   my.cnf

2.1) OS 종류와 Version
    uname -a 명령어로 확인 할 수 있습니다.
    shell>uname -a
    SunOS OMP 5.9 Generic_118558-25 sun4u sparc SUNW,Sun-Fire-V210
    -----     ---
    ⓐ        ⓑ
    ⓐ - OS 종류
    ⓑ - OS Version
    OS 버젼에 따른 mysql 설치파일을 선택하여 다운로드 받아야 합니다.
    SunOs 5.9  : Solaris 9
    SunOs 5.10 : Solaris 10
2.2) Processor 종류 확인
    uname -a 명령어로 확인 할 수 있습니다.
    shell>uname -a
    SunOS OMP 5.9 Generic_118558-25 sun4u sparc SUNW,Sun-Fire-V210
                                          -----
                                           ⓐ
    ⓐ - processor type
2.3) 설치할 파티션 확인 하기
    df -k 로 적당한 파티션을 선택합니다. 일반적으로 omp 운영 파티션와 다른
    파티션에 설치하는 것이 일반적이죠. 그 이유는 잘 생각해 보세요.
    일반적인 명령어는 df -k 이지만 SunOs 5.9 부터는 df -h가 더 좋음.

    shell> df -h
    파일시스템             크기   사용   가용   용량    설치지점
    /dev/dsk/c0t0d0s0      9.6G   4.2G   5.3G    45%    /
    /proc                    0K     0K     0K     0%    /proc
    mnttab                   0K     0K     0K     0%    /etc/mnttab
    fd                       0K     0K     0K     0%    /dev/fd
    swap                   2.2G   168K   2.2G     1%    /var/run
    swap                   2.2G   1.3M   2.2G     1%    /tmp
    /dev/dsk/c0t0d0s4       19G   369M    19G     2%    /data  --> ⓐ
    /dev/dsk/c0t0d0s5       19G   9.9G   9.1G    53%    /data1 --> ⓑ
    /dev/dsk/c0t0d0s6       23G    22G  1004M    96%    /data2 --> ⓒ

    만약 위와 같은 결과 라면 어떤 것이 좋은 까요. ? [ ⓐ, ⓑ ,ⓒ ]
    만약 OMP 운영 계정이 설치된 파티션이 /data --> ⓐ 라면

    뭐 정답이 없지만 되도록 ⓑ 혹은 ⓒ 에 설치하는 것이 좋습니다.
    현재는 ⓒ가 사용공간이 가장 많이 남았으므로 ⓒ (/data2) 가 정답 일 수 있겠죠.

2.4) root계정권한
    당연한 이야기 이지만 반드시 root 권한으로 설치 해야 합니다.
    그러기 위해서 root 권한 정보를 알아야 합니다.

2.5) Kernel 정보
    Kernel 어떤 Application 을 지원하는 여부 64bit , 32bit 지원여부
    shell> isainfo -kv
    64-bit sparcv9 kernel modules

    현재 설치되어는 64bit 커널이 설치되어 있으면 sparcv9도 지원한다는 의미 있지만.
    64bit 경우는 32bit도 지원합니다.

    전체 지원여부는 확인 하기 위해서 아래와 같은 옵션을 주어서 확인 합니다.
    shell> isainfo -v
    64-bit sparcv9 applications
    32-bit sparc applications

2.6) Install 할 mysql 준비
    2.1) - 2.5) 정보를 통해서 서버에 어떤 버전의 mysql 바이너리 파일을 설치 해야
    할지를 결정할 수 있습니다.

    만약 정보를 결과가 다음과 같다면
    No  Item        Value
    ===================================
    1   OS          SunOs
    2   Version     5.9
    3   Processor   sparc
    4   Partition   /data2
    5   Kernel      64-bit

    http://www.mysql.com 사이트에서
    다음과 같은 버젼을 DownLoad 합니다.
    mysql-5.0.67-solaris9-sparc-64bit.tar.gz
    혹은 mysql-standard-4.1.20-sun-solaris2.9-sparc-64bit.tar.gz

    여기서 mysql 버젼은 4.1.x 이상을 설치를 권장합니다.
    여기서 기준은 4.1.20 기준으로 설명 하겠습니다.
    mysql version에 따른 설정이 조금씩 틀릴 수 있지만 큰 차이는 없습니다.

    ** 주의) 만약 tar명령어 실행 결과가 체크섬 오류가 발생하는 경우라면
    ----------------------------------------------------------------------------
    gtar를 다운로드 받아서 gtar로 압축 해지 해야 함.

    이유는 솔라리스에 있는 tar 유틸리티가 긴 이름의 압축파일을 읽지 못하는 버그가
    있기 때문이다.
     - 자세한 설명 : http://akmamb.tistory.com/entry/linuxunix-tar-gtar-gzip
     - gtar download site : http://www.filewatcher.com/m/gtar-solaris-4.1.4-sparc.gz.160392.0.0.html
    만약 gtar를 다운로드 받을 수 없다면 관련 파일을 자료실에서 확인 할 수 있음.
    설치방법은 gzip으로 압축 푼후 파일명은 gtar로 변경하고 실행 권한 준후에 사용하면됨.
    ----------------------------------------------------------------------------

2.7) GUI Client 다운로드 및 설치
    pc에서 사용할 mysql용 GUI client를 설치함.
    HeidiSQL : 다운로드 사이트(http://www.heidisql.com/)
    Mysql Front : 다운로드 사이트(http://www.mysql.com)

2.8) OMP_Schema파일
    mysql 서버를 설치 후 OMP에서 사용할 DB를 생성하고 TABLE 생성할 때 사용하는
    SQL 파일입니다.
    ** 주의) 버젼를 주의하기 바랍.

2.9) 환경설정 파일
    /etc/my.cnf 파일 즉 mysql 서버 구동 시 적용되는 mysql 서버 파라미터를 설정하는
    파일 입니다.
    메모리및 cpu 등 환경에 따라서 알맞게 설정된 파일 준비해야 합니다.



3. MYSQL 서버 설치작업
    2. 사전준비가 모든 완료 되었다면 mysql 서버를 설치 작업을 진행해야 합니다.
    설치 작업 순서는 pkgadd 방식이 아닌 tar 명령어를 사용하여 풀어서 적당한
    디렉토리에 복사하는 방식을 취합니다.

    설치파일 및 기타 설정 정보는 다음과 같다고 가정 합니다.
    - 설치 홈 디렉토리 : $MYSQL_INSTALL_HOME=/data2/mysql-Version
    - 설치 파일명 : $MYSQL_INSTALL_FILE=mysql-standard-4.1.20-sun-solaris2.9-sparc-64bit.tar.gz

    3.1) root 로그인
    $> su - root

    3.2) mysql group 과 user 추가
    #> groupadd mysql
    #> useradd -d /data1/mysql -s /bin/bash -g mysql -m mysql
    mysql 계정 생성시 디렉토리는 일반사용자 추가와 동일하게 합니다.

    3.3) 설치 파일 압축 해제 및 복사
    #> cp mysql-standard-4.1.20-sun-solaris2.9-sparc-64bit.tar.gz /data2/mysql
    #> gzip -d mysql-standard-4.1.20-sun-solaris2.9-sparc-64bit.tar.gz
    #> tar xvf mysql-standard-4.1.20-sun-solaris2.9-sparc-64bit.tar --> 참고 1.6)
    #> mv mysql-standard-4.1.20-sun-solaris2.9-sparc-64bit.tar mysql-4.1.20

    3.4) 심볼릭 링크 생성
    #> cd /usr/local
    #> ln -s $MYSQL_INSTALL_HOME mysql

    3.5) mysql DB 초기화 작업
    #> cd $MYSQL_INSTALL_HOME
    #> scripts/mysql_install_db --> 주의ⓐ
    ** 주의ⓐ ) 반드시 위와 같은 순서로 설치해야 정상적으로 동작합니다.
    만약 cd scripts 디렉토리로 이동후 mysql_install_db를 하면 정상적으로 동작하지
    않을 수도 있습니다.
    이유는 mysql_install_db 스크립트 파일은 상태 패스를 잡고 동작하도록 되어 있기
    때문입니다. 반드시 주의 하세요.

    3.6) mysql 관련 디렉토리 소유자및 그룹변경
    #>cd $MYSQL_INSTALL_HOME
    #>chown -R root .
    #>chown -R mysql data
    #>chgrp -R mysql .
    여기서 ' . ' 은 $MYSQL_INSTALL_HOME 이며
    data디렉토리는 $MYSQL_INSTALL_HOME/data 를 의미 합니다.

    결과는 아래와 같아야 함.
    ::::::::::::::::::::::::::: ls -al :::::::::::::::::::::::::::
    OMP [ ktfsg {568} /usr/local/mysql ] ls -al
    총 104
    drwxr-xr-x  14 root     mysql        512 2006년  5월 25일 ./
    drwxr-xr-x  11 root     root        1024 2008년  7월  3일 ../
    -rw-r--r--   1 root     mysql      19071 2006년  5월 25일 COPYING
    -rw-r--r--   1 root     mysql       5712 2006년  5월 25일 EXCEPTIONS-CLIENT
    -rw-r--r--   1 root     mysql       8111 2006년  5월 25일 INSTALL-BINARY
    -rw-r--r--   1 root     mysql       1380 2006년  5월 25일 README
    drwxr-xr-x   2 root     mysql       1536 2006년  9월  1일 bin/
    -rwxr-xr-x   1 root     mysql        801 2006년  5월 25일 configure*
    drwxr-x---   8 mysql    mysql        512 2008년  7월 28일 data/
    drwxr-xr-x   2 root     mysql        512 2006년  5월 25일 docs/
    drwxr-xr-x   2 root     mysql       1536 2006년  5월 25일 include/
    drwxr-xr-x   2 root     mysql        512 2006년  5월 25일 lib/
    drwxr-xr-x   3 root     mysql        512 2006년  5월 25일 man/
    drwxr-xr-x   7 root     mysql        512 2006년  5월 25일 mysql-test/
    drwxr-xr-x   2 root     mysql        512 2006년  5월 25일 scripts/
    drwxr-xr-x   3 root     mysql        512 2006년  5월 25일 share/
    drwxr-xr-x   5 root     mysql       1024 2006년  5월 25일 sql-bench/
    drwxr-xr-x   2 root     mysql        512 2006년  8월 17일 support-files/
    drwxr-xr-x   2 root     mysql        512 2006년  5월 25일 tests/
    ::::::::::::::::::::::::::: ls -al :::::::::::::::::::::::::::

    3.7) 시스템 구동 script 작업
    서버가 재구동하거나 중단 할 때 mysql 서버를 stop 시키거나 start 시키기
    위해서 시스템 run level에 알맞게 script 파일을 작업합니다.

    일반적으로 booting script 파일의 원본파일은
    $MYSQL_INSTALL_HOME/support-files/mysql.server 입니다.
    ** 첨부설명)
    일반적은 mysql.server 내용은 수정 없이 잘 동작 하지만 만약 정상적으로 구동
    하지 않을 경우 내용을 다음과 같이 수정하면 정상적으로 동작할 수 있습니다.
    수정하기전에 원본 파일을 백업해두시기 바랍니다.
    ::::::::::::::::::::::::::: mysql.server :::::::::::::::::::::::::::
    ① basedir=/usr/local/mysql
              -+-------------
               |
               +---> '/usr/local/mysql' 추가
    ② pid 파일 설정 변경
      if test -z "$pid_file"
      then
          pid_file=$datadir/`/usr/bin/hostname`.pid
                   ----+-----------------------------
                       |
                       +--> $datadir/`hostname`.pid -> 로 변경
      else
          case "$pid_file" in
              /* ) ;;
               * )  pid_file="$datadir/$pid_file" ;;
          esac
      fi
    ::::::::::::::::::::::::::: mysql.server :::::::::::::::::::::::::::



    - mysql.server 스크립트 심볼릭 링크 생성
    #> cd /etc/init.d
    #> ln -s $MYSQL_INSTALL_HOME/support-files/mysql.server mysql.in ; chmod +x mysql.in
    #> cd /etc/rc3.d
    #> ln -s $MYSQL_INSTALL_HOME/support-files/mysql.server S99mysql ; chmod +x S99mysql
    #> cd /etc/rc0.d
    #> ln -s $MYSQL_INSTALL_HOME/support-files/mysql.server K01mysql ; chmod +x K01mysql

    3.8) Mysql Configuration File 복사 및 환경 설정 작업
    #> cp $MYSQL_INSTALL_HOME/support-files/my-large.cnf /etc/my.cnf
    변경 할 내용은 향후 자세하게 정리 함.

    3.9) mysql 서버 구동 시키기 및 정상 동작여부 확인하기
    구동시키기
    #> /etc/init.d/mysql.in start
    -----------------------------------------------------------
    Starting MySQL
    SUCCESS!
    -----------------------------------------------------------

    동작여부 확인
    #> $MYSQL_INSTALL_HOME/bin/mysqladmin version
    -----------------------------------------------------------
    mysqladmin  Ver 8.41 Distrib 4.1.20, for sun-solaris2.9 on sparc
    Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
    This software comes with ABSOLUTELY NO WARRANTY. This is free software,
    and you are welcome to modify and redistribute it under the GPL license

    Server version          4.1.20-standard
    Protocol version        10
    Connection              Localhost via UNIX socket
    UNIX socket             /tmp/mysql.sock
    Uptime:                 51 days 4 hours 15 min 17 sec

    Threads: 6  Questions: 159317348  Slow queries: 66  Opens: 4279  Flush
    tables: 5  Open tables: 256  Queries per second avg: 36.031
    -----------------------------------------------------------
    위와 같이 출력되면 정상
    혹은 ps -ef |grep mysqld 로도 확인 가능함.

    3.10) OMC 및 외부 접속 계정 등록하기
    - tester 계정등록 (비밀번호 없음)

    #> $MYSQL_INSTALL_HOME/bin/mysql -u root -p
      Enter password:
    아래과 같은 sql 명령어를 순차적으로 입력함.
    ① grant all privileges on *.* to tester@localhost identified by '';
    ② grant all privileges on *.* to tester@"%" identified by '';
    ③ grant all privileges on *.* to tester@"HostName" identified by '';
                                              --------
                                                |
                                                +--> 장비의 Hostname을 적어줌
    ④ flush privileges;

    설명
    ① - 모든 자원(DB,TABLE)에 대해서 localhost의 tester 계정에 대해서 모든권함을
    줌. 암호 X
    ② - 모든 자원(DB,TABLE)에 대해서 %(localhost와 hostname)제외한 서버의 tester
    계정에 대해서 모든권함을 줌. 암호 X
    ③ - 모든 자원(DB,TABLE)에 대해서 Hostname이름을 가진 서버의 tester 계정에
    대해서 모든권함을 줌. 암호 X
    ④ - 위명령어에 대해서 서버에 반영을 합니다.

    실제 실행 결과
    ---------------------------------------------------------------------------
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 2 to server version: 4.1.20-standard

    Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

    mysql> grant all privileges on *.* to tester@localhost identified by '';
    Query OK, 0 rows affected (0.00 sec)

    mysql> grant all privileges on *.* to tester@"%" identified by '';
    Query OK, 0 rows affected (0.00 sec)

    mysql> grant all privileges on *.* to tester@"HostName" identified by '';
    Query OK, 0 rows affected (0.00 sec)

    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)
    ---------------------------------------------------------------------------

4. OMP DB 생성 및 TABLE 생성 , 기타 환경작업
    향후 진행하는 작업는 MYSQL CLIENT를 프로그램을 사용하여 할 수 있습니다.
    편한 방법으로 진행하시기 바랍니다.
    ** 주의1) 테이블 생성하기 전에 반드시 DB를 먼저 생성해야 합니다.
    또한 테이블 생성 할때는 사용하는 Script 파일은 특정 mysql 버젼에 따라
    동작하지 않을 수도 있으므로 실행하기 전에 반드시 확인 해 봐야 합니다.

    ** 주의2) 각 MYSQL CLIENT 프로그램 설치하여 좀더 작업을 편하게 할수 있습니다.
    설치 방법은 별도 설명을 추가 하지 않습니다.(워낙 쉬워요)

    4.1) PATH에 /usr/local/mysql/bin 를 추가함.
    4.2) DB 생성
    mysql> create database DB_NAME;
    mysql> show databases;
    +------------------+
    | Database         |
    +------------------+
    | mysql            |
    | test             |
    | DB_NAME          |
    +------------------+
    혹은

    $>/usr/local/mysql/bin/mysqladmin create DB_NAME

    4.3) TABLE 생성
    $> cp 스키마파일 /usr/local/mysql/bin
    $> mysql DB_NAME < 스키마파일

    4.4) 생성된 TABLE 확인 하기
    mysql> use DB_NAME;
    mysql> show tables;



5. 맺음말
    Mysql에 대한 설치 방법은 각 OS 마다 차이 있습니다.
    물론 위에서 제시한 방법이 최선이라고는 생각하지 않습니다.
    더 좋은 방법이 존재 할거라고 생각하기도 합니다.
    좀더 손쉬운 방법이나 SunOS 환경이 아닌 Linux 혹은 다른 OS 설치에 대한
    가이드 필요할꺼라 생각합니다.




6. 참고자료
    6.1) mysql 도움말 (http://dev.mysql.com/doc/)
    6.2)



-------------------------------------------------------------------------
리눅스에서 외부 접속이 되지 않는 경우
/etc/mysql/my.cnf 의 아래 부분을 주석 처리 하고
bind-address = 127.0.0.1 주석 처리

/etc/init.d 에서
mysql stop;mysql start 합니다.