FREEDOM. FRIENDS. FEATURES. FIRST.
페도라 한국 사용자 모임

mysql 2개 운영하기

게시판 Tech/Tip mysql 2개 운영하기

  • This topic has 0개 답변, 1명 참여, and was last updated 10 years, 9 months 전에 by 태랑. This post has been viewed 22 times
  • 만든이
    게시글
  • #12008
    태랑
    키 마스터
    • 게시글208
    • 댓글879
    • 총합1087
    • ★★
    @admin

    설치 환경 및 버전

    OS

    Fedora12

    Apache2.2

    httpd-2.2.13-4.fc12.i686

    php 5.2.12

    소스설치 5.2.12

    mysql

    5.0.90

     

     

    (수정중입니다 )

     

    mysql 5.x 사용하면서 unicorn보드를 사용하려고 하면서 unicorn보드가 UTF8을 미지원하면서

    euc-kr로 운영할 mysql을 하나더 설치할일이 생겨서 설치하게 되었습니다

     

    기존에 mysql RPM으로 설치되어있었고 소스설치로 하나더 설치 할것입니다

    모든작업은 root로 할 것 입니다

     

    먼저 /etc/my.cnf 파일을 옴겨 높습니다 저는 rpm mysql 이 설치되어있기에 /var/lib/mysql 로 옴겨놓겠습니다

    # mv /etc/my.cnf /var/lib/mysql/

     

     

     

    **호스팅 서버 자체 필터링으로 인해서 w get 으로 쓰지만 실제로 사용시에는

    w 와 get을 붙여서 사용해야 합니다 **

     

     

    다운받고 압축풀기

    # w get ftp://mirror.khlug.org/mysql/Downloads/MySQL-5.0/mysql-5.0.90.tar.gz

    # tar zxvf mysql-5.0.90.tar.gz

     

    디렉토리로 이동후

    # ./configure --prefix=/usr/local/mysql2 --localstatedir=/usr/local/mysql2/data \

    --with-charset=euckr --enable-assembler --without-debug --enable-thread-safe-client \

    --with-mysqld-user="mysql2" --with-client-ldflags=-all-static \

    --with-mysqld-ldflags=-all-static --with-readline \ 

    --sysconfdir=/usr/local/mysql2

    # make

    # make install

     

    mysql 데이터베이스 생성

    # /usr/local/mysql2/bin/mysql_install_db

     

    공유라이브러리 설정파일에 mysql라이브러리 경로를 추가 

    /etc/ld.so.conf  파일에 아래내용을 추가한후

    /usr/local/mysql2/lib

     

    # ldconfig    <-- 실행

     

    유저를 생성합니다

    # useradd -M -d /usr/local/mysql2 -s /sbin/nologin mysql2

     

     

    소유권을 지정합니다

    # chown -R root:mysql2 /usr/local/mysql2/

    # chown -R mysql2:mysql2 /usr/local/mysql2/data/

     

    mysql에서 사용할 환경 설정파일을 복사 합니다 시스템에 따라 다르니 아래를 참조합니다

    my-huge.cnf       1GB 이상 메모리

    my-large.cnf       512MB ~ 1GB

    my-medium.cnf  128MB ~ 256MB

    my-small.cnf      64MB 이하

    테스트 시스템은 메모리가 683MB임으로 my-large.cnf 를 이용합니다

     

    my2.cnt을 복사 합니다

    # cp /usr/local/mysql2/share/mysql/my-large.cnf /usr/local/mysql2/my.cnf

     

    그리고 my.cnt 을 열어서 포트를 변경합니다

    저는 3306에서 3307 로 변경하고 socket도 변경하겠습니다

     

     

    [client]
    #password = your_password
    port =
    3307
    socket = /tmp/mysql2.sock
    [

    mysqld]
    port =
    3307
    socket = /tmp/mysql2.sock

     

    저장하고 나와서

     

     

    mysql 데몬을 띄웁니다

    # /usr/local/mysql2/bin/mysqld_safe &

     

    ps -ef | grep mysql  로 확인해보면 아래와 같이 mysql2 계정으로 떠잇는걸 확인할수 있습니다

     

    root      3945     1  0 05:01 pts/1    00:00:00 /bin/sh /usr/bin/mysqld_safe

         --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=

         /var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql

    mysql     4118  3945  0 05:01 pts/1    00:00:00 /usr/libexec/mysqld

       --basedir=/usr --datadir=/var/lib/mysql --user=mysql

       --log-error=/var/lib/mysql/taerang.err --pid-file=/var/run/mysqld/mysqld.pid

       --socket=/var/lib/mysql/mysql.sock --port=3306

    mysql2    4175  4152  0 05:05 pts/0    00:00:00 /usr/local/mysql2/libexec/mysqld

        --basedir=/usr/local/mysql2 --datadir=/usr/local/mysql2/data --user=mysql2

        --pid-file=/usr/local/mysql2/data/taerang.pid --skip-external-locking

       --port=3307 --socket=/tmp/mysql2.sock

     

    *파란색부분에 mysql2계정으로 3307 포트로 활성화 되어있는걸 확인할수있습니다

     

    root 비밀번호를 지정하겠습니다

     

    ** sql인젝션 공격감지로인해 필터링되어서 스크린샷으로 띄웁니다

     

     

     

    원래 목적인 euc-kr mysql을 설치했으니 케리터셋을 확인해보면

    mysql> show variables like "c%";

     

     

    euc-kr이 제대로 설정되어있는걸 확인할수 있네요

     

    기존에 phpmyadmin 을 사용하고 있다면 하나도 설치해서 포트번호를 달리해도 상관없고

    기존의 phpmyadmin에 추가하여 사용할수 있습니다 아래는 추가하여 사용하는 방법입니다

    중요한건 이렇게 사용하려면 auth_type cookie을 사용해야합니다

     

    첫번재 에 맨윗줄에 $i++;  이 없으니 써주고 $cfg['Servers'][$i]['verbose'] = '이름지정';  이부분을 추가합니다

     

     

    $i++;

    /* Authentication type */

    $cfg['Servers'][$i]['verbose'] = 'mysql5-1';

    $cfg['Servers'][$i]['auth_type'] = 'cookie';

    /* Server parameters */

    $cfg['Servers'][$i]['host'] = 'localhost';

    $cfg['Servers'][$i]['connect_type'] = 'tcp';

    $cfg['Servers'][$i]['compress'] = false;

    /* Select mysqli if your server has it */

    $cfg['Servers'][$i]['extension'] = 'mysql';

     

     

     

     

     

    두번째 새로설치한부분인데 포트번호 다르게 지정해주시고 verbose 이름달리지정해주세요

    socket 도 달리해주셔야 합니다

    $i++;

      $cfg['Servers'][$i]['verbose'] = 'mysql5-2';    <-구분하는 이름

      $cfg['Servers'][$i]['host'] = 'localhost';

      $cfg['Servers'][$i]['port'] = '3307';

      $cfg['Servers'][$i]['socket'] = '/tmp/mysql2.sock';

      $cfg['Servers'][$i]['connect_type'] = 'socket';

      $cfg['Servers'][$i]['extension'] = 'mysql';

      $cfg['Servers'][$i]['auth_type'] = 'cookie';

      $cfg['Servers'][$i]['AllowNoPassword'] = true;

     

     

    저장하고 띄워보면 아래와 같이 서버를 선택할수 있습니다

     

    만약 소스로 기존에 설치된 상태에서 또하나 설치하는거라면 /etc/my.cnf 파일을 꼭

    기존 mysql data 디렉토리로 옴겨 놓으시기 바랍니다

    /etc my.cnf파일이 있으면 전역적으로 적용되기에 여러 mysql 운영하려면 꼭 옴겨주시기 바랍니다

     

    오픈소스를 응원합니다 Blog https://hoing.io
    Senior Database Administrator(Mysql, Oracle)

    사이트 이용 문의 사항은 댓글이나 admin@fedoralinux.or.kr 로 메일주세요

  • 답변은 로그인 후 가능합니다.