제로보드의 mysql Database 이전 후 로그인이 이루어지지 않는 이런 황당한 일들이..

어찌 되었던 해결 해야 하지 않겠습니까..? 이대로 로그인 안되게 둘 순 없으니..

 

작업 대상 환경 : Cent 5.8 / apache 2.2.X  / php 5.3.x / mysql 5.2.x

기존 정보 : redhat 7.3 / apache 1.3.x / mysql 3.2.x / php 4.1.x / zero board 4

 

6년이 넘은 서버를 대대적인 업그레이드를 진행 해야 했다. 소스 수정없이..!!

 

이렇게 버전 업그레이드시에 가장 에러가 많이 발생하는 부분은 php다.

mysql 또한 속을 썩이는 경우도 간혹 있지만, 아래 포스팅 참고하면 어렵지 않게 마이그레이션이 가능 하다.

Mysql 3.x to 5.x migration

 

php는 버전이 달라지면서, 없어지거나 이름이 바뀌는 함수들이 존재 하기 때문에 소스 수정이 필요하거나,

php.ini 옵션들을 이용해 기존 그대로 사용할 수도 있다.

 

apache의 경우는 버전이 달라지더라도 설치할 버전이 맞게끔 설정만 해준다면 큰 이상 발생할 우려가 전혀~ 없다.

 

본론으로 들어가자면, 로그인이 이루어지지 않는 원인은?

아이디, 패스워드가 다르거나 member table 내에 회원 정보가 존재하지 않는 경우일 것이다.

 

이전에는 정상적으로 로그인 되던게 안된다면 후자는 아닐 것이고, 전자라는 것인데 패스워드는 바꾼적이 없다.

DB가 이상 동작 하는건가? ?

 

mysql 4.0 이하에서 4.1 이상으로 변경 되면서 패스워드 방식이 변경 되었다.

하여 해당 DB 그대로를 사용하면 패스워드를 다르게 인식하게 되는 문제가 생겨 로그인이 되지 않는 것.

 

서버호스팅, 혹은 단독의 슈퍼유저권한이 존재하는 서버의 경우는 /etc/my.cnf 파일에 옵션 하나 추가 하는 것으로 해결이 가능하다.

 

[rubi] / > # vi /etc/my.cnf

### 중략

[mysqld]

old_password = 1

 

하지만, 웹호스팅 혹은 쉐어드 호스팅의 경우에는 소스상에서 수정 해주어야 한다.

제로보드 홈디렉토리 아래에 login_check.php 파일이 존재 하는데, SQL Query 구문을 수정 해준다.

 

[rubi] / > #  vi login_check.php

$result = mysql_query(“…”)  아래의..  password=password(‘$password’) 부분

=>

password=old_password(‘$password’))

 

위 경우는 서버를 교체 해야 하는데 홈페이지 개발 인력이 없는 경우 제로보드의 큰 수정없이 진행 하는 방법일뿐..

버전 업그레이드를 진행한다면, 제로보드에서 제공하는 마이그레이션 툴을 통해 XE로 업그레이드 하는 것이 보안상 좋다.

 

제로보드 마이그레이션 툴에 대한 설명은 아래 URL 참고.

http://www.xeschool.com/xe/step1_53