Linux

제로보드 사용 MySql 버젼 5로 업그레이드 하기

행복한하루 2007. 7. 25. 01:06
이번 글은 전에 제로보드를 사용할때에 MySql을 버젼 5로 업그레이드 한 경우가 있었는데, 이 때의 기록을 남긴것입니다. 이글도 네이버에 있는 제 블로그에서 가져온 것인데, 요세도 혹시 도움이 될까 해서 글을 올려 봅니다.

제가 기존에 사용하고 있던 버젼은 MySql 3.23PHP 4.3.4 그리고 Apache 2.0.48 를 사용하고 있었습니다.

근데 이번에 mediawiki를 설치할려고 했더니 잘 안되네요... 제가 잘 못 설치해서 그런지는 모르겠지만 어쨌든 잘 안되었습니다. 

그래서 MySql 버젼 4.0.26 이 설치 되어 있는 곳에 설치해 봤더니 정상적으로 설치가 되었습니다.

해서 요번에 MySql를 3.23 에서 4를 건너뛰고 5.0.22로 upgrade하게 되었습니다.

저는 제로 보드를 사용하고 있었기 때문에 제로보드에 있는 것을 옮기는 작업도 필요했습니다.

1. MySql 5.0.22 설치

먼저 5.0.22 를 binary 형태로 된걸 다운받아 설치했습니다. (실행은 시키지 않았습니다.)
Binrary형태로 된것은 설치가 쉽기 때문에 별도로 설명하지는 않겠습니다.

     shell> groupadd mysql
     shell> useradd -g mysql mysql
     shell> cd /usr/local
     shell> gunzip < /PATH/TO/MYSQL-VERSION-OS.tar.gz | tar xvf -
     shell> ln -s FULL-PATH-TO-MYSQL-VERSION-OS mysql
     shell> cd mysql
     shell> scripts/mysql_install_db --user=mysql
     shell> chown -R root  .
     shell> chown -R mysql data
     shell> chgrp -R mysql .
     shell> bin/mysqld_safe --user=mysql &

INSTALL-BIRARY에 있는 설치 순서 입니다. 여기서 기존에 mysql이라는 user와 group를 가지고 있다면 추가를 안해주어도 됩니다.

2. 제로보드 DB 백업

DB 백업할때에 MySql에서 지원하는 명령이 있지만 저는 제로보드 admin에서 제공하는 DB 백업을 이용하였습니다.

DB 백업을 이용하면 DB이름_날자.sql 로 파일이 만들어 집니다. (PC에 생기면 FTP로 서버로 넣어주면 됩니다. ㅎㅎ)

3. 예전 MySql 정지

$ mysqladmin -uroot -proot shutdown

mysqladmin 명령을 이용하여 user 이름과 암호를 넣고 shutdown 실행하면 MySql 3.23이 정지 됩니다. (처음에 user랑 password를 설정안했다면 그냥 mysqladmin shutdown 해도 멈춥니다.)

4. 새 MySql 실행

설치되어 있는 디렉토리로 이동하여 새롭게 설치한 MySql를 실행 시킵니다.

$ bin/mysqld_safe --user=mysql &

5. 새로운 User 생성

User도 백업할 수 있으나 저는 User를 새로 추가했습니다.

mysql> INSERT INTO user VALUES('localhost','zerouser',PASSWORD('zerouser0'),'N','N','N','N','N','N','N','N','N','N'
,'N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','','','','',0,0,0,0);
Query OK, 1 row affected (0.01 sec)

그리고 사용자가 사용할 DB와 권한을 권한을 줍니다.

mysql> insert into db values('localhost','zerodb','zerouser','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'
,'Y','Y','Y');
Query OK, 1 row affected (0.00 sec)

그리고 Database를 만들어 주고 reload 시켜 줍니다.

$ bin/mysqladmin create zerodb

$ bin/mysqladmin reload

6. 백업받은 DB 복구

$ bin/mysql -uzerouser -pzerouser0 zerodb < zerodb_20060620.sql

2번 절차에서 만든 DB 백업 파일(이 예제에서는 zerodb_20060620.sql) 을 이용하여 DB를 복구합니다. 

-u 다음에는 user 그리고 -p 다음에는 password 그리고 새로 만든 DB이름을 입력하면 됩니다.

이 명령 실행 후 mysql로 접속해서 보면 zerodb에 정상적으로 table이 만들어 진것을 확인 할 수 있습니다.

7. PHP 수정

MySql을 버젼 5로 upgrade 하고 나서

홈페이지에 접속해 보니 게시판에 있는 글들은 다 복구가 되었으나 로그인이 안되는 문제가 발생해서 MySql 홈페이지를 찾아봤더니 password 입력하는 방식이 바뀌었다고 나와 있었습니다.

그래서 제로보드가 설치된 디렉토리에서 login_check.php를 수정하였습니다.

// 회원 로그인 체크
        $result = mysql_query("select * from $member_table where user_id='$user_id' and password=password('$pass
word')") or error(mysql_error());
        $member_data = mysql_fetch_array($result);

login_check.php에 보면 위와 같은 부분이 있는데...

여기서 password를 old_password로 변경하였습니다. (MySql 5 에서 예전 Client들을 지원하기 위한 함수라고 한다.)

$result = mysql_query("select * from $member_table where user_id='$user_id' and password=old_password('$password')") or error(mysql_error());

8. 확인

이렇게 바꾸고 나서 홈페이지에 들어가서 확인하니 제대로 동작하네요...

그리고 Mediawiki도 설치가 되더군요... ^^

지금까지 저의 MySql upgrade 경험기 였습니다.

기억을 더듬어 가며 작성해 봤는데 빠진게 있는지 잘 모르겠네요... ㅎㅎ