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

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

한글 오류 문구는 워드프레스 버전에 따라 조금씩 다를 수 있습니다. 처음 번역은 "데이터베이스 연결 중 오류"였지만 "데이터베이스 연결을 구축하는 중 오류입니다"라는 어색한 표현으로 바뀌었습니다. 최근에는 다시 "데이터베이스 연결 중 오류"로 표시되는 것 같습니다.

[ 이 문서는 오래 전에 작성되었지만 이후의 경험을 바탕으로 내용을 대폭 추가하여 새로 발행되었습니다. ]

워드프레스에서 '데이터베이스 연결 중 오류' 또는 '데이터베이스 연결을 구축하는 중 오류입니다' (Error establishing a database connection) 에러 발생 시

워드프레스에서 '데이터베이스 연결 중 오류' 또는 '데이터베이스 연결을 구축하는 중 오류입니다' 에러가 발생하는 경우가 있습니다.

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

워드프레스가 업데이트되면서 '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에 접속할 수 있어야 합니다.

카페24를 이용하는 경우 카페24 계정에 접속하여 데이터베이스 비밀번호를 변경할 수 있습니다.

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로 업그레이드)하는 등 서버 리소스를 추가하면 문제가 해결될 수도 있습니다.

서버 과부하 문제

서버 과부하로 인해 CPU 사용량이 일시적으로 급증하면서 이런 문제가 발생할 수도 있습니다. 실제로 클라우드웨이즈에 호스팅 중인 워드프레스 사이트가 "어플리케이션 중 한 개에 대하여 구글이 엄청나게 크롤링을 하고 있어서 CPU 과부하로 인해 서버 다운"이 되면서 "Error establishing a database connection" 에러가 발생한 경우가 네이버 카페에 올라온 적이 있습니다.

클라우드웨이즈에 문의해봤는데, 어플리케이션 중 한개에 대해서 구글이 엄청나게 크롤링을 하고 있어서 CPU 과부하로 인해 서버다운이 된것으로 얘기하더라고요. 다른 블로그는 0~2%였는데, 1개만 200%가 넘더라고요.
크롤링을 지연시키는 방법을 쓰는거 외에는 현재로서 답이 없다고 하는데, 알려준 방법이 생각보다 어려워서 일단 기다렸는데, 오늘 정상으로 돌아왔습니다 ㅎㅎ
서버가 다운되고 블로그가 잠시 셧다운된 효과로 네이버 지식스니펫에 있던 글 몇개가 사라져버렸네요 ㅋㅋㅋ

출처: 네이버 카페

wp-config.php 파일에 입력한 데이터베이스 정보가 정확한 상황에서 이런 현상이 발생하는 경우, 호스팅 업체에 문의하면 원인을 알려 줄 수도 있습니다.

참고로 구글 크롤링 속도가 지나치게 높은 경우 크롤링 속도를 제한할 수 있습니다.

서버 문제

아마존 AWS나 아마존 라이트세일 등에서 서버를 잘못 세팅하여 이런 문제가 발생하는 경우를 간혹 목격합니다. 일부 페이지에서는 사이트가 제대로 작동하지만 특정 URL이나 관리자 페이지 등에서 '데이터베이스 연결 중 오류'가 발생하기도 합니다.

이 경우 서버 관리자를 통해 문제를 해결해야 합니다. 문제 해결이 어려운 경우, 데이터와 DB를 백업한 다음, 새로운 워드프레스 인스턴스를 만들어 복원하는 것도 고려해볼 수 있습니다.

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

데이터베이스 연결 오류가 발생하면서 참고로 다음과 같은 에러가 표시되는 경우:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) 에러

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) 문서(영문)가 도움이 될 것입니다.

다음과 같은 명령으로 이 문제를 해결했다는 분도 계십니다.

sudo /etc/init.d/mysql restart

이것이 원인인 경우 사이트에서는 Too Many Redirects와 같은 오류가 함께 나타날 수 있습니다. 그리고 특정 페이지/글은 접속이 되지만 대부분의 페이지/글에는 접속이 되지 않을 수 있습니다.

서버 문제가 발생할 경우 구글링하여 해결하는 과정에서 많은 것을 배울 수 있지만 한편으로는 많은 스트레스를 받을 수 있습니다. 서버 문제 때문에 사이트가 접속 불능이 된다면 수익형 블로그의 경우 더 큰 손해를 볼 수도 있을 것입니다.

리눅스 서버 관리에 어려움을 겪는 경우 국내 호스팅이나 블루호스트와 같은 해외 호스팅으로 이전을 고려해볼 수 있습니다("아마존 AWS에서 국내 호스팅으로 워드프레스 이전 작업" 참고).

일시적인 오류

간혹 일시적으로 이 오류가 발생하기도 합니다. 그런 경우 대부분 시간이 조금 지나면 정상화됩니다. 자주 이런 문제가 발생한다면 웹호스팅 업체에 문의하여 원인을 문의해볼 수 있습니다. 서버 리소스가 부족하거나 일시적으로 방문자가 몰려서 이런 문제가 발생할 수도 있는 것 같습니다.

멀웨어(악성코드)로 인한 오류

드물지만 사이트가 악성코드에 감염될 경우에도 이와 같은 오류가 발생할 수 있습니다. FTP로 웹 서버에 접속하여 이상한 이름의 PHP 파일들이 생성되어 있지 않은지 체크해보시기 바랍니다. 악성코드에 감염되었다면 백업본을 사용하여 사이트를 복구한 후에 보안 조치를 할 수 있습니다. 악성코드 제거에 어려움을 겪는 경우 여기에서 서비스(유료)를 의뢰하실 수 있습니다.

XAMPP 서버에서 MySQL과의 충돌로 인한 문제

로컬 컴퓨터에서 XAMPP로 서버를 구성하여 사용하는 경우 MySQL과의 충돌로 인해 이런 문제가 발생할 수 있다고 합니다.

Run 으로 services.msc 를 열고 실행 중인 MySQL 을 중단한 후 XAMPP로 아파치 서버와 MySQL을 다시 시작하면 문제가 해결된다고 합니다.

참고로 테스트 사이트를 운영하고 싶은 경우 클라우드웨이즈에 가입하면 3일 동안 무료 사용이 가능합니다. 클라우드우드웨이즈가 속도와 서버 관리 편의성 면에서 좋은 평가를 받고 있습니다.

마치며

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

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

참고:

일부 글에 제휴 링크가 포함될 수 있으며 파트너스 활동으로 일정액의 수수료를 받을 수 있습니다.

2개 댓글

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

댓글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다