워드프레스에서 '데이터베이스 연결 중 오류' (Error establishing a database connection)

  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 카카오스토리 공유하기

워드프레스에서 간혹 "데이터베이스 연결 중 오류 (Error establishing a database connection)" 오류가 발생하는 경우가 있을 수 있습니다. 워드프레스에서 '데이터베이스 연결 오류'가 발생하는 경우 대처 방법에 대해 살펴보겠습니다.

[ 이 문서는 2015년에 최초 작성되었지만 경험을 바탕으로 내용을 대폭 추가하여 새로 발행되었습니다. ]

워드프레스에서 '데이터베이스 연결 중 오류' (Error establishing a database connection) 발생 시

부정확하거나 변경된 DB 정보로 인한 데이터베이스 연결 오류

워드프레스 데이터베이스 연결 오류

이 오류가 발생할 경우 먼저 어떤 상황에서 오류가 발생하는지를 파악해야 합니다. 위와 같은 오류는 처음 워드프레스를 설치할 때 혹은 워드프레스 사이트를 이전했을 때 발생할 수 있습니다. 이 경우에는 wp-config.php 파일에서 DB 정보가 정확한지 확인해야 합니다.

define('DB_NAME', 'db-name');
define('DB_USER', 'db-user-name');
define('DB_PASSWORD', 'db-password');
/** MySQL hostname */
define('DB_HOST', 'localhost');

DB 호스트 이름은 카페24, 블루호스트 등 많은 호스팅 업체에서 localhost이지만 호스팅업체에 따라 다른 경우도 있을 수 있습니다. 예를 들어, ipage.com의 경우 accountname.ipagemysql.com이 DB 호스트 이름이 됩니다. 국내 호스팅 중 하나인 가비아의 경우 DB_Host에 DB IP 주소를 입력해야 합니다.

wp-config.php 파일을 수정하려면 보통 FTP에 접속할 수 있어야 합니다. wp-config.php 파일을 수정하는 방법은 "워드프레스에서 wp-config.php / htaccess 파일 수정하기"를 참고해보세요.

DB 정보가 정확한 상황에서 데이터베이스 연결 오류가 발생하는 경우

DB 정보가 정확함에도 불구하고 연결이 되지 않는 경우, 처음 호스팅에 가입하여 설치하는 과정에서 오류가 발생하면 호스팅 업체에 전화나 라이브 채팅을 통해 연락하여 도움을 구하도록 합니다.

참고로 여러 개의 계정을 사용하는 경우에는 다른 계정의 DB 정보를 착각하여 입력하지 않았는지 체크해보시기 바랍니다. 드물지만 이 때문에 고생하는 경우도 본 적이 있습니다.

데이터베이스 손상 복구 시도

"Error establishing a database connection" 오류가 프런트엔드에만 나타나는지, 아니면 프런트엔드와 wp-admin에서도 동시에 나타나는지 확인해야 합니다. 프런트엔드에서만 나타나고 백엔드에서는 “One or more database tables are unavailable. The database may need to be repaired”와 비슷한 오류가 표시되는 경우에는 데이터베이스가 손상된 경우이므로 손상된 데이터베이스 테이블을 수정해야 합니다. 이를 위해 wp-config.php 파일에 다음 라인을 추가합니다:

define('WP_ALLOW_REPAIR', true);

그런 다음 http://www.your-site-address.com/wp-admin/maint/repair.php에 접속하여 데이터베이스를 수정할 수 있습니다. 수정한 후에는 위에서 추가한 라인을 제거해야 합니다.

기타 조치

그리고 로컬 컴퓨터에서 APM 툴을 깔고 워드프레스를 설치하여 사용하는 경우에 이런 문제가 발생하면 wp-config.php에서 DB host 이름을 IP 주소로 바꾸면 문제가 해결될 수도 있습니다.

사용자가 데이터베이스에 연결할 수 있는 충분한 권한이 있는지를 테스트하려면 ftp에 접속하여 PHP 파일을 하나 만들고 다음 코드를 복사하여 붙여넣기 합니다:

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

사용자 이름과 패스워드는 해당 서버에 맞게 수정합니다. 이 DB 연결 테스트 파일을 실행했을 때, 연결에 성공했다는 메시지가 표시되면 데이터베이스 연결은 올바르게 이루어지고 있고 다른 곳에 문제가 있음을 의미합니다.

데이터베이스 연결이 정상적이지만 연결되지 않는 오류가 발생하면 위에서 설명한 방법으로 손상된 데이터베이스를 수정하거나 백업 데이터베이스로 되돌리면 됩니다. 하지만 정보를 올바르게 입력했음에도 불구하고 연결 오류가 발생하는 경우 웹호스팅 업체에 연락하여 도움을 요청하도록 합니다.

참고로 phpMyAdmin에서 다음 쿼리를 실행하여 문제가 해결되었다고 하는 사용자도 있습니다.

UPDATE wp_options SET option_value='사이트_URL' WHERE option_name='siteurl'

사이트_URL은 적절히 변경해주시기 바랍니다. (먼저 DB를 확실히 백업을 받아놓고 실행하세요.)

워드프레스 이전 후 데이터베이스 연결 오류가 발생하는 경우

개인적으로는 호스팅업체 서비스에 새로 가입하고 Duplicator를 사용하여 기존 사이트를 그대로 이전한 후에 DB에 잘 연결되지 않는 문제가 있었습니다. DB를 지침대로 만들고 DB 정보를 제대로 입력해도 제대로 작동하지 않았습니다.

새로 가입한 호스팅업체에서 제공하는 워드프레스 만들기 기능(하위 폴더에 원하는 대로 워드프레스 사이트를 만드는 기능)을 사용하여 하위 폴더에 다른 워드프레스 사이트를 하나 만들고, 하위 폴더의 wp-config.php 파일을 참조하여 DB 정보를 파악한 후에, 새로 만들어진 워드프레스 사이트의 DB로 연결하고 DB를 복원하여 문제를 해결한 적이 있습니다.

또 다른 경우, 문제 없이 잘 사용하고 있는데 갑자기 "Error establishing a database connection" 오류가 발생한 경우가 있었는데, 웹호스팅 업체에 라이브 채팅으로 연결하여 지원을 받아서 문제를 해결하기도 했습니다(이 경우 호스팅업체의 기술자가 DB를 재설정하여 문제 해결).

캐시 플러그인으로 인한 문제

드물지만 간혹 캐시 플러그인 때문에 Elementor (엘리멘터)와 같은 페이지 빌더에서 페이지를 수정하거나 저장할 때 '데이터베이스 연결 중 오류'가 발생하는 경우가 있습니다. 이 경우 캐시 플러그인을 비활성화하여 문제가 해결되는지 체크해볼 수 있습니다. 캐시 플러그인이 원인이 아니라면 해당 페이지 빌더를 제외한 모든 플러그인을 비활성화하여 문제가 발생하는지도 확인하도록 합니다.

문제가 캐시 플러그인 때문에 발생한다면 캐시 플러그인을 다른 것으로 대체하는 것을 고려할 수 있습니다. 다른 플러그인과의 충돌로 이 문제가 발생한다면 해당 플러그인을 제거하거나, 필수 플러그인인 경우 플러그인 개발자에게 연락하여 문제 해결을 시도해볼 수 있습니다.

서버 자원 부족

서버를 직접 세팅하여 워드프레스를 운영하는 경우 서버 메모리를 많이 사용하는 테마를 사용할 때에도 DB 연결 오류가 발생할 수 있습니다.

예를 들어, 서버 이전 후에 워드프레스 테마를 뉴스페이퍼로 변경하여 테스트할 때 이 문제가 발생하는 경우가 있다고 합니다. 서버 메모리를 증설(예: 2GB에서 4GB로 업그레이드)하면 문제가 해결될 수도 있습니다.

마치며

이 블로그를 통해 항상 강조하는 바이지만 정기적인 백업이 특히 중요합니다. 예상치 못한 상황에서 오류가 발생하거나 멀웨어나 해킹 등으로 사이트에 문제가 발생하더라도 백업본을 사용하여 복구가 가능합니다.

문제가 발생하면 먼저 백업본이 있는지부터 확인해보시기 바랍니다. 웹호스팅에 연락하면 백업본을 제공해줄 수도 있습니다. 카페24의 경우 지난 7일 이내의 기간으로 복원이 가능합니다. 해외호스팅 중 하나인 SiteGround의 경우 지난 30일 이내의 백업본이 유지됩니다.

참고:



2 개 댓글

  1. 안녕하세요.
    이전에도 도움받았던 기억이 납니다.
    제가 힘입어 AWS EC2의 Freetier로 직접 서버운영하며 사이트를 관리하며
    http://sidemirror.shop/blog에 작업이미지를 업로드를 많이하였습니다.
    다른변동사항은 전혀없어 Freetier서버 용량 초과가 의심됩니다.
    Front와 End에서 공히 "Error establishing a database connection"메세지]
    귀하의 도움을 청합니다.이번달이 Freetier 무료기간 종료로 새로 인스턴스를 구입하여 운영코저합니다.

    응답
    • 안녕하세요, 정병호님.

      서비스 의뢰(유료)는 문의 페이지를 이용해주시기 바랍니다.

      https://www.thewordcracker.com/forum/support-system

      응답