서버의 mysql 버젼차이로 인한 그누보드 db복구설치 에러.... > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

서버의 mysql 버젼차이로 인한 그누보드 db복구설치 에러.... 정보

서버의 mysql 버젼차이로 인한 그누보드 db복구설치 에러....

본문

이글은 질의글이기도 하고 혹시 저같은 분을 위한 참고용 글이기도 합니다. -_-;;

그누보드 설치버젼 : 4.11.00
호스팅 서버1)  기존홈피
호스팅 서버2)  서버1) 백업홈피를 옮긴 신규

기존 서버1)의 홈피를 백업해서 서버2) 옮겨 설치하니, 백업된 웹파일은 모두 이상이 없는데
db만 재설치하면 에러가 발생해서 홈피가 정상적으로 나타나질 않습니다.

이문제로 호스팅업체와 설전을 벌였는데 문제는

서버1)에서 db백업시...
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

위와 같은 에러가 발생하고

직접백업이 되지않아서 호스팅측에서 강제백업을 해준 db를 서버2)에 설치할때는...
ERROR 1062 (23000) at line 662: Duplicate entry '2008-04-13--121.157.137.188' for key 2

위와 같은 에러가 발생해서 그누게시판 db자체가 제대로 설치가 되지를 않더군요.
결국 이문제를 웹검색해서 찾아보니, 버젼의 차이이란게 확신이 서서 재차 질의를 했더니, 결국...

호스팅 서버1)  mysql 버젼 = 4.0.25
호스팅 서버2)  mysql 버젼 = 4.1.20

위와 같이 호스팅의 서버가 mysql 버젼이 서로 다른게 문제였습니다.

통상 리뉴얼작업을 위해 임시의 호스팅계정에 기존홈피를 백업해서 작업후, 새로 옮기는 과정을 거치기도 합니다.
그런데 이런식으로 mysql버젼이 문제가 되는경우, 호스팅쪽에서도 손을 쓸수가 없다고 하는군요. -_- ;;

일단의 다시 한판(?)해서 db는 강제설치를 했는데....이런~~~~~ 회원로그인이 또 안되는군요.
이는 상위버젼으로 이전함으로 인해 생기는 회원로그인의 문제인데,
관리자뿐만 아니라 전체회원의 웹로그인자체가 되지를 않는 문제가 발생을 합니다.
(호스팅업체에 일단 맡겨놓고 지켜보는중~~)

자료의 백업및설치는 고객의 몫이라는 호스팅측 업체말도 뭐 틀린말은 아니기에
앞으로 이렇게 계정이동작업을 통해서 리뉴얼작업 or 기존홈피의 수정을 통한 신규홈피작업도 필요한데
서버간 mysql 버젼문제가 생기면 앞으로 작업에 커다란 지장이 있을거 같네요.

지금껏 이런적이 없어서 당황스럽기도 합니다만, 단지 저렇게 버젼차이가 있는 이유만으로
기존생성된 게시판의 자료들의 db가 백업이 안되고 제대로 복구 되지 않는다면
애로사항이 이만저만이 아닐거 같아 경험있으신 분들의 도움을 구하고자 적어봅니다.

1) mysql 버젼문제로 인한 db백업에서 발생하는 이문제를 사용자가 해결할수 있는 방법이 없을까요...?
2) 상위버젼mysql or 기타... db설치후, 또 웹로그인이 안되는 문제를 해결할 방법은 ?

댓글 전체

위 2)번 질의에 대한 답은 다른분이 작성하신글을 찾은거 같아서 저와 비슷한 경험을 한분들을 위해
올려봅니다. 필요한경우, 그누보드소스의 수정도 필요할거 같습니다만... (제 gnu버젼이 낮은것인지도..)


[참고글]

MySQL 4.0이하에서 만들어진 회원들의 정보및 password 데이타를 MySQL 4.1 이상에서 그냥 이용하기   


상당히 특이한 경우지만 저처럼 걸리는 경우가 있어서 -_-

혹시 필요하실 분들을 위해 올립니다.

제로보드와 GNU보드 둘다 회원들의 password를 관리할때

MySQL의 password()를 사용하는데 이 함수가 4.0이하와 4.1이상에서

다른 hashing value를 가집니다. 다 아시겠지만 4.0이하는 16바이트,
4.1이상은 40바이트의 hashed value를 가집니다.

저희 싸이트 옛 보드는 제로보드를 쓰는데 (그누로 업뎃중입니다.)

패스워드가 모두 옛날 password()함수로 되어있습니다. 최근에 호스트쪽에서

MySQL 4.1.X로 업그레이드를 해서 지금 설치된 그누보드는 password()를 쓸때에

모두 16바이트 대신 40바이트의 hashed value를 돌려주게 됩니다. 즉, 회원정보를 옮겨오면

로그인이 안되는것이죠.

다음과 같이하면 됩니다.

common.lib.php에 아래 함수를 넣어줍니다.

function sql_old_password($value)
{
    $row = sql_fetch(" select old_password('$value') as pass ");
    return $row[pass];
}

그리고 login_check.php의 15번째줄을

if (!$mb[mb_id]) {
alert("가입된 회원이 아니거나 패스워드가 틀립니다.\\n\\n패스워드는 대소문자를 구분합니다.");
} else { //id가 있는경우
if ( (sql_password($mb_password) != $mb[mb_password]) && (sql_old_password($mb_password) != $mb[mb_password]) ) {
    alert("가입된 회원이 아니거나 패스워드가 틀립니다.\\n\\n패스워드는 대소문자를 구분합니다.");
}
}

로 바꾸어 줍니다. 더 간단하게도 쓸수 있지만 논리 에러를 내지 않으려고 일부러 길게 썼습니다.

그리고 register_form.php의 66-67번째 줄을

if (!($member[mb_password] == sql_password($_POST[mb_password]) && $_POST[mb_password]) && !($member[mb_password] == sql_old_password($_POST[mb_password]) && $_POST[mb_password]))
        alert("패스워드가 틀립니다.");

로 바꾸어 줍니다. 회원 정보 수정시에 한번더 비밀번호를 체크하기에 여기도 넣어주어야 합니다.

이렇게 해주면 나중에 회원이 비밀번호를 바꾸었을경우에도 제대로 로그인이 됩니다.

그리고 회원들이 모두 비밀번호를 40바이트짜리로 바꾸었을경우에는 위에 바꾼것을 원래대로

돌려 놓는것이 좋습니다.
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT