Error establishing a database connection
WordPress가 사이트를 표시하는 데 필요한 데이터베이스에 연결하지 못했을 때 화면 전체에 표시되는 오류입니다.
빠른 답변
- 우선 확인할 원인
- "Error establishing a database connection"은 WordPress가 데이터베이스 서버에 연결하지 못해 페이지를 생성할 수 없다는 뜻입니다. wp-config.php의 데이터베이스 이름·사용자·비밀번호·호스트 값이 맞는지, 데이터베이스 서버가 정상인지, 호스팅 계정의 용량 한도나 서버 다운이 없는지 순서대로 확인해야 합니다.
- 먼저 확인할 항목
- wp-config.php의 DB_NAME·DB_USER·DB_PASSWORD·DB_HOST 값이 실제 데이터베이스 설정과 일치하는지 확인합니다.
- 적용 범위
- 현재 증상과 본문에 적은 관찰 조건이 함께 확인된 경우
- 출처 확인일
- 2026-07-29
- 최종 검토
- 2026-07-23
- 정정 이력
- 2026-07-29 이후 기록 없음
- 관련 기술
현재 증상
- 데이터베이스 연결 실패
먼저 확인할 항목
wp-config.php의 DB_NAME·DB_USER·DB_PASSWORD·DB_HOST 값이 실제 데이터베이스 설정과 일치하는지 확인합니다.
웹 호스트에 데이터베이스 용량 한도 초과나 데이터베이스 서버 다운이 없는지 확인합니다.
설정과 호스팅에 이상이 없으면 사이트가 외부 침해로 변조되지 않았는지 점검합니다.
수정 후 같은 URL을 다시 열어 오류 화면이 재현되는지 확인합니다.
피해야 할 조치
주의
- wp-config.php를 수정하기 전에 원본 파일을 백업해 잘못된 값으로 덮어썼을 때 되돌릴 수 있게 합니다.
- MySQL 비밀번호를 재설정하는 경우 wp-config.php의 값도 함께 바꿔야 하며, 다른 애플리케이션이 같은 계정을 쓰는지 먼저 확인합니다.
- 이 오류 화면만으로 데이터가 손실됐다고 단정하지 않습니다. 연결 실패는 데이터 삭제와 다른 상태입니다.
환경별 원인과 조치
"Error establishing a database connection"은 WordPress가 페이지를 생성하는 데 필요한 데이터베이스에 연결하지 못했을 때 사이트 전체에 표시되는 오류입니다. WordPress는 콘텐츠와 설정을 데이터베이스에 저장하므로, 연결이 성립하지 않으면 어떤 페이지도 렌더링할 수 없습니다.
이 화면은 데이터가 사라졌다는 신호가 아니라, WordPress가 데이터베이스에 "닿지" 못했다는 결과입니다.
공식 문서가 제시하는 원인
WordPress 공식 문서는 이 오류의 원인을 크게 세 가지로 구분합니다.
| 원인 | 확인할 내용 |
|---|---|
| wp-config.php 정보 오류 | 데이터베이스 이름·사용자 이름·비밀번호·호스트 값의 정확성 (가장 흔한 원인) |
| 웹 호스트 문제 | 데이터베이스 용량 한도 초과로 인한 중단, 또는 서버 다운 |
| 사이트 변조 | 설정과 호스팅에 이상이 없을 때 외부 침해 가능성 점검 |
확인 순서
- FTP 등으로 접속해
wp-config.php를 열고, 데이터베이스 이름·사용자·비밀번호·호스트 네 값이 실제 설정과 일치하는지 확인합니다. - 값이 맞는데도 연결되지 않으면, 필요에 따라 MySQL 비밀번호를 재설정하고 그 값을
wp-config.php에도 반영합니다. - 설정이 정확하다면 웹 호스트에 문의해 데이터베이스 용량 한도나 서버 상태를 확인합니다.
- 설정과 호스팅 모두 정상이면 사이트가 변조되지 않았는지 점검합니다.
설정 오류인지, 호스팅 측 문제인지, 변조인지를 구분하면 조치 대상을 좁힐 수 있습니다. 서버 오류를 단계적으로 좁히는 절차는 서버 오류 분류 체크리스트를 참고합니다.
수정 후에는 한 번의 성공만으로 해결됐다고 판단하지 말고 같은 조건에서 페이지를 다시 열어 확인합니다.
운영 사례에서 확인한 점검 범위
[Observation] 수집된 세 사례는 모두 WooCommerce가 포함된 WordPress 환경에서 발생했습니다. 아래 표는 실제 발생 비율이 아니라, 사례 원문에서 확인된 점검 대상입니다.
| 점검 대상 | 사례 수 | 사례 |
|---|---|---|
| DB 서버 무응답·중단 또는 호스팅 상태 | 3 | 사례 1, 2, 3 |
DB 자격 증명 또는 wp-config.php 설정 | 1 | 사례 1 |
| DB 손상 또는 복구 필요 | 2 | 사례 1, 2 |
| 플러그인 충돌 | 1 | 사례 3 |
| 바쁜 쿼리·DB 용량과 호스팅 규모의 불일치 | 1 | 사례 2 |
사례별 확인 순서
- [Observation]
wp-config.php의 DB 이름, 사용자, 비밀번호, 호스트를 확인합니다. 사례 1에서 안내되었습니다. - [Observation] 호스팅사 상태와 DB 서버의 실행·무응답 상태를 확인하고, 필요 시 서버 로그 점검을 요청합니다. 사례 1과 사례 3에서 안내되었습니다.
- [Observation] WooCommerce 외 플러그인을 비활성화한 뒤 오류 재현 여부를 확인합니다. 사례 3에서 안내되었습니다.
- [Observation] 주기적으로 발생하면 DB 최적화, 불필요한 플러그인, 캐시, 현재 용량·트래픽에 대한 호스팅 규모를 점검합니다. 사례 2에서 제시되었습니다.
- [Observation] DB 손상 또는 중단이 확인되면 호스팅사가 수행하는 DB 복구가 사이트 복구에 사용된 사례가 있습니다. 사례 1과 사례 2에서 언급되었습니다.
원인 단정 시 주의
- [Observation] WooCommerce 업데이트 직후 발생한 사례에서도 자격 증명, DB 서버 상태, DB 손상을 함께 점검 대상으로 두었습니다. 업데이트만을 확정 원인으로 볼 근거는 사례 원문에 없습니다.
- [Observation] WooCommerce Analytics 화면에서 시작된 오류가 장바구니와 로그인에도 나타난 사례가 있습니다. 특정 화면의 기능 문제로만 한정하면 DB 서버 상태를 놓칠 수 있습니다.
- [Observation] 주기적 오류 사례에서는 호스팅사의 DB 복구 뒤 사이트가 동작했지만, 바쁜 쿼리와 DB 규모가 함께 관찰되었습니다. 복구 성공만으로 재발 조건이 제거되었다고 판단할 근거는 없습니다.
원인 분포
[Observation] 제공된 3건의 사례에서는 다음 원인이 각각 1건씩 관측됐습니다.
| 원인 유형 | 관측 사례 수 |
|---|---|
| DB_HOST에 실제 MySQL 포트 미반영 | 1 |
| WordPress 설치 파일 또는 설정 상태 문제 | 1 |
| SELinux의 httpd 연결 권한 비활성화 | 1 |
[Observation] 위 분포는 수집된 사례 기준이며 실제 발생 빈도를 의미하지 않습니다.
오진 함정
- [Observation] MySQL 서비스와 자격증명이 정상이어도 DB_HOST의 포트가 실제 로컬 MySQL 포트와 다르면 연결이 실패할 수 있습니다.
- [Observation] 별도 PHP 연결 검사가 성공해도 WordPress 설치 파일 또는 설정 상태 문제는 남아 있을 수 있습니다.
- [Observation] MySQL 클라이언트 연결이 성공해도 WordPress 프로세스의 SELinux httpd 원격 연결 권한이 꺼져 있으면 연결이 실패할 수 있습니다.
환경 매트릭스
| 환경 | 관측된 증상 | 확인 또는 수정 | 결과 |
|---|---|---|---|
| Windows WAMP, 로컬 MySQL | 설치 직후 기본 localhost 연결 실패 | DB_HOST를 127.0.0.1:3307로 변경 | 연결 성공 |
| Windows Server 2022 IIS, 두 번째 WordPress 설치 | 해당 설치만 연결 오류, 별도 PHP 검사는 성공 | 콘텐츠 디렉터리를 제외한 정상 WordPress 파일 재복사 및 DB 값 변경 | 해결 |
| RHEL 9, WordPress와 MySQL 분리 서버 | MySQL 클라이언트는 성공하지만 WordPress 연결 실패 | httpd_can_network_connect, httpd_can_network_connect_db 활성화 | 연결 성공 |
진단 순서
- [Observation] 실행 환경에서 MySQL 서비스 상태와 WordPress DB 자격증명을 확인합니다.
- [Observation] 로컬 연결이면
wp-config.php의DB_HOST가 실제 MySQL 포트를 포함하는지 확인합니다. - [Observation] 별도 PHP 또는 MySQL 클라이언트 연결 검사를 실행해 애플리케이션 외부의 연결 가능 여부를 구분합니다.
- [Observation] WordPress만 실패하면 설치 파일과 설정 상태를 정상 설치와 비교합니다.
- [Observation] WordPress와 MySQL이 분리된 RHEL 환경이면 SELinux의 httpd 원격 연결 권한을 확인합니다.
- [Observation] 확인된 환경에 해당하는 설정을 수정한 뒤 WordPress 연결 결과를 재확인합니다.
수정 후 다시 확인
서버 오류 원인 구간 확인
서버 오류가 발생하면 먼저 응답 코드, 발생 URL·시각, 같은 시각의 오류 로그를 기록해야 합니다. 그 뒤에 실제로 확인된 적용 환경에서 코드·구성·의존성·실행 자원을 한 항목씩 분리해 재현 여부를 확인합니다.
전체 확인 항목 보기참고 자료
확인 범위: definition, common-causes, resolution · 확인일: 2026-07-23
확인 범위: WooCommerce 업데이트 뒤 데이터베이스 연결 오류가 표시되었습니다., DB 자격 증명, DB 서버 상태, DB 손상이 점검 대상으로 제시되었습니다., wp-config.php 설정 확인, 호스팅 상태 확인, DB 복구가 안내되었습니다. · 확인일: 2026-07-26
확인 범위: 장기간 운영한 WooCommerce VPS 사이트에서 데이터베이스 연결 오류가 주기적으로 발생했습니다., 약 800MB 데이터베이스와 바쁜 쿼리가 있는 환경에서 DB 중단이 관찰되었습니다., 호스팅사의 DB 복구 뒤 사이트가 다시 동작했습니다., DB 최적화, 플러그인 점검, 캐시, 호스팅 상향이 제시되었습니다. · 확인일: 2026-07-26
확인 범위: WooCommerce Analytics, 장바구니, 로그인에서 약 10분간 데이터베이스 연결 실패가 발생했습니다., 플러그인 충돌과 DB 서버 무응답이 점검 대상으로 제시되었습니다., WooCommerce 외 플러그인 비활성화로 재현 여부를 확인하고, 지속 시 호스팅사에 서버 로그와 DB 실행 상태 점검을 요청하도록 안내되었습니다. · 확인일: 2026-07-26
확인 범위: Windows WAMP 환경에서 기본 localhost로는 MySQL 연결에 실패했습니다., wp-config.php의 DB_HOST를 실제 포트가 포함된 127.0.0.1:3307로 변경한 뒤 연결이 성공했습니다. · 확인일: 2026-07-29
확인 범위: Windows Server 2022 IIS에서 두 번째 WordPress 설치만 연결 오류를 보였습니다., 같은 자격증명을 사용한 별도 PHP 연결 검사는 성공했습니다., 정상 사이트의 WordPress 파일을 콘텐츠 디렉터리 제외 후 다시 복사하고 DB 관련 값을 변경한 뒤 문제가 해결됐습니다. · 확인일: 2026-07-29
확인 범위: RHEL 9에서 MySQL 클라이언트 연결은 성공했지만 WordPress 연결은 실패했습니다., SELinux의 httpd 원격 연결 권한이 꺼져 있었습니다., httpd_can_network_connect와 httpd_can_network_connect_db를 켠 뒤 WordPress 연결이 성공했습니다. · 확인일: 2026-07-29