갑자기 ‘데이타 베이스와의 연결이 안된다’는 메시지를 받았을 때 조치요령.

    지난 주말부터 갑자기 잘 유지되고 있던 나의 또 다른 블로그가 말썽을 부려서 그걸 해결하느라고 주말을 모두 소진했다. 그 과정에서 배우게 된 쓸만한  내용을 글로 남긴다.

    대개의 경우에 우리가 만나는 db연결 에러는 wp-config.php에 기록하는 몇가지 간단한 정보(DB NAME, DB USER, DB password, DB host, DB table prefix)를 잘못 기재하기 때문에 나타난다. 하지만 설치 후에 정상적으로 운영되던 사이트가 갑자기 ‘db 연결이상’이라는 메시지를 보내오면 당황할 수밖에 없다.

 db 연결문제의 근본 원인을 진단하자.

1. wp-admin 접속은 문제 없는가?

홈화면의 접속(이것을 front-end라고 부른다. )과 관리자 화면접속( www. example. com/ wp-admin, 이것을 back-end 라고 부른다. ) 에서 모두 데이타베이스 접속에러 라고 하는지 아니면 관리자 화면에서는 다른 메시지 (“One or more database tables are unavailable. The database may need to be repaired”)뜨는지 확인 해야 한다.  관리자 화면에서 ‘데이타 베이스의 수리가 필요하다.’ 는 메시지가 뜬다면 아래와 같이 조치한다.

   우선 wp-config.php 파일의 맨뒤에 아래의 코드를 붙여넣기하고 업로드한다. (관리자 화면에 접속이 안되는 상황이므로 대쉬보드에서의 편집은 불가능하므로 ftp방법으로 접속해야한다. )

 

그런 다음에 브라우저 주소창에 아래 와같이 입력하고 엔터!  ( 물론 여기서 [www.yoursite.com] 는 자신의 사이트 url로 바꾸어야한다. )

http://www.yoursite.com/wp-admin/maint/repair.php

그러면 아래와 같은 화면이 나타난다.

Executed-result-of-repair-php
Executed-result-of-repair-php
repair-result-screen
repair-result-screen

     복구가 실행되고 마지막에 config.php파일을 원상으로되돌려 놓으라는 메시지가 뜬다.  만일 DB가 깨진 경우였다면 수리가 끝났으므로 admin 화면의 접속에는 문제가 없을 수 있지만 또한 계속해서 동일한 메시지가 뜰수도 있다. (필자는 아직 경험해 보지는 못했다.) 이때는 어쩔 도리가 없다. MySQL DB를 지우고 새로 설치할 수 밖에 … 따라서 이런 때를 대비해서 수시로 사이트를 백업해 놓아야 한다. (내보내기 방법으로 대쉬보드의 도구 메뉴에서 내보내기를 누르면 xml파일로 모든 포스트를 내 컴푸터에 백업 받을 수 있다. 필자는 오히려 저장용량 등  다른 이유 때문에 사이트를 이리 저리 이사 다녀야했고 이 때문에 XML 방식의 백업을 자주 이용하고 있다.   )

2.  DB연결이 진짜 문제인지 진단해보자.

    프런트엔드와 백엔드에서 모두 디비 연결이 않된다고 나오는 경우에  진짜 그런 문제인지 확인하는 방법이 있다.

    코드 에디터(필자는 EditPlus를 쓴다.)로 ,아래의 코드를 입력한 파일을 하나 만든다. 파일명은 뭐라든 좋지만 확장자는 php라고 해야한다. 디비연결 테스트할 코드를 넣은것이므로 필자는 connectiontest.php 라고 지었다.

 

 <?php $link = mysql_connect('localhost, 'DB_user', 'DB_password');
    if (!$link) {
    die('Could not connect' . mysql_error());
    }
    echo 'Connected successfully';
    mysql_close($link);
    ?>

물론  ‘localhost', 'DB_user', 'DB_password‘ 이 세 가지는 wp-config.php 파일에 기재된 그대로 기재 되어야 한다.  명심!!!

그리고 나의 홈 디렉토리에 업로드한다. (또는 원하는 디렉토리 어디든 접속 테스트를 해보고 싶은 디렉토리라면 어디든 모두 업로드 해도 좋다. )

이제 브라우저 창에 아래와 같이 입력하고 엔터 !!!

http://www.yoursite.com/connectiontest.php

이때 화면에서

Connected successfully 

라는  메시지를 얻게된다면 DB접속 권한에는 아무런 문제가 없다는 뜻이다.    (필자는 여러 디렉토리에 테스트 파일을 업로드하고 그디렉토리명까지 압력해서 모든 디렉토리들을 확인했다. 나중에 안 사실이지만 그럴 필요까지는 없었다.  ) 만일 이런 메시지를 얻지 못한다면

1. phpMyAdmin 접속은 잘 되는지 확인한다. phpMyAdmin 접속에 문제가 없다면 cpannel 에서 DB NAME, DB USER, DB password, DB host 값을 정확히 확인해서 wp-config.php 파일과 비교해야한다. (대게 phpMyAdmin은 호스팅업체의 cPannel 에 기록된 값들을 이용해서 직접 접속이 가능하므로 다른 입력의 실수가 있을 수 없다. )

 따라서 그 동안에 잘 작동하던 것이 더라도 혹시 실수로 이 값들을 변경해 버렸을 가능성을 확인하는 것이 순서이다.

2.   phpMyAdmin과 테스트 파일의 접속이 모두 이상이 있다면 당장 호스트업체에 연락해서 조치를 취해야한다.

이때 대개는 테스트 파일 실행시에 아래와 같은 메시지가 뜬다.

 Access denied for user ‘DB_user’ (using password: YES)

이것은 시스템이 다운되었다기 보다는 우리가 모르는 어떤 이유로 DB접속 권한에 문제가 생긴 경우가  많다고 한다.  (필자는 실수로 바로 직전에 비밀번호를 다시 생성해놓고 지워버린 비빌번호를 테스트 파일에 입력하는 실수를 하는 바람에 위와 같은 메시지를 받은 경험이 있다. 바로 알아 차려서 다시 입력하고 접속에 성공했지만 … ㅎㅎ)

3. 물론 동일한 호스팅업체에서 또 다른 호스팅서비스를 받는 계정이 있다면 이 경우와도 비교해 보는 것도 좋다. 두 계정이 모두 접속에 문제가 있다면 필경 DB서버에 무슨 문제가 있을 가능성이 높을 것이지만 대개는 초보 입장에서 실수에 의한 문제일 가능성이 있을 수도 있다.

4. DB  접속에는 아무런 문제도 없는 경우…

필자의 경우 초기에는 db접속에 문제가 발생해서 이것을 확인하느라고 애썼지만  실제로는  프런트 페이지에서 white screen이 얻어지는 것이 문제였다 . 이것을 해결하겠다고 호스트를 변경하면서 설치 중에 실수 혹은 과정에서 원인을 모르는 DB연결 에러 메시지가 발생했고 이것을 확인하는 과정 중에 (호스트 업체에서 자발적으로 조치했을 가능성이 높음)  모두 조치되었다.

여기서 글을 마친다.  다음 글에서는  DB연결에는 아무런 문제도 없는데 화면이 하얗게 나오고 백엔드로는 접속이 가능한 경우에 대해 다뤄보겠다.

소셜댓글

Loading Facebook Comments ...
Loading Disqus Comments ...

No Trackbacks.