Lightsail에서 호스팅되는 WordPress 기반 애플리케이션에서 데이터베이스 연결 오류를 해결하려면 어떻게 해야 합니까?

5분 분량
0

WordPress 기반 애플리케이션에 연결할 때 다음 오류 중 하나 또는 둘 다가 표시됩니다.

‘Error establishing a database connection.’ ‘One or more database tables are unavailable. The database may need to be repaired.’

이러한 오류를 해결하려면 어떻게 해야 합니까?

간략한 설명

다음과 같은 이유로 ‘Error establishing a database connection’ 오류가 발생할 수 있습니다.

  • 손상된 데이터베이스 테이블이 있습니다.
  • 원격 데이터베이스 연결이 비활성화되었습니다.
  • 데이터베이스 서비스가 중단되었습니다.
  • 볼륨에 공간이 부족합니다.
  • WordPress 구성 파일에 잘못된 로그인 자격 증명이 있습니다.

해결 방법

손상된 데이터베이스 테이블

브라우저에서 웹 사이트의 wp-admin 페이지(예: example.com/wp-admin)를 열고 ‘One or more database tables are unavailable. The database may need to be repaired.’ 오류가 발생하는지 확인합니다. 이 오류가 표시되면 손상된 데이터베이스 테이블로 인해 ‘Error establishing database connection’ 오류가 발생하는 것입니다. 손상된 테이블을 복구하려면 다음을 수행합니다.

1.    vi 편집기와 같은 텍스트 편집기를 사용하여 wp-config.php 파일에 액세스합니다.

$ sudo vi wp-config.php

2.    wp-config.php 파일에 다음 줄을 추가합니다. ‘That’s all, stop editing! Happy blogging’ 줄 바로 앞에 줄을 추가합니다.

define('WP_ALLOW_REPAIR' ,true);

3.    파일에 이전 설정을 추가한 후 다음 URL에 액세스한 후 데이터베이스 복구를 실행합니다.

/wp-admin/maint/repair.php(예: example.com/wp-admin/maint/repair.php)

4.    데이터베이스 복구를 실행한 후 wp-config.php 파일에 추가한 코드 줄을 제거합니다. 이 줄을 제거하지 않으면 누구나 데이터베이스에서 복구를 실행할 수 있습니다.

원격 데이터베이스 연결 비활성화

데이터베이스가 원격 데이터베이스 서버에 상주하는 경우가 있습니다. 데이터베이스 서버가 웹 사이트를 호스팅하는 인스턴스의 원격 연결을 허용하지 않으면 데이터베이스에 연결할 수 없습니다. 이 문제를 해결하려면 다음을 수행하세요.

1.    wp-config.php 구성 파일에서 DB_HOST 값을 확인합니다. 호스트가 localhost 또는 127.0.0.1이 아닌 경우 데이터베이스는 다음 예와 같이 원격 서버에 상주합니다.

define('DB_HOST', '192.168.22.9');

2.    3306 포트의 서버에서 원격 서버로 텔넷을 시도합니다. 연결할 수 없으면 원격 서버의 데이터베이스 구성에서 원격 연결이 허용되지 않습니다. 또는 원격 서버에 연결을 차단하는 방화벽이 있습니다. Lightsail 인스턴스에서 연결을 허용하는 데 도움이 필요하면 외부 데이터베이스 소유자 또는 지원 부서에 문의하세요.

고가용성과 보안을 위해 웹 사이트 데이터베이스를 Lightsail 관리형 데이터베이스에 저장하는 것이 가장 좋습니다.

데이터베이스 서비스가 중단됨

참고: 다음 파일 경로와 명령은 Lightsail WordPress 인스턴스가 MySQL을 사용하는지 MariaDB를 사용하는지에 따라 변경될 수 있습니다. 또한 파일 경로와 명령은 인스턴스가 네이티브 Linux 시스템 패키지를 사용하는지(접근 방법 A) 또는 자체 포함 설치인지(접근 방법 B)에 따라 다릅니다. 데이터베이스 서버 유형과 따라야 할 접근 방식을 식별하려면 다음 명령을 실행합니다.

test ! -f "/opt/bitnami/common/bin/openssl" && echo "Approach A" || echo "Approach B"
test -d /opt/bitnami/mariadb && echo "MariaDB" || echo "MySQL"

1.    테이블 손상이나 원격 데이터베이스 연결 문제가 없는지 확인했지만 WordPress가 여전히 데이터베이스에 연결할 수 없다면 데이터베이스 서버가 중단되었을 수 있습니다. 이 문제는 데이터베이스 구성 문제, 서버의 과도한 트래픽, 디스크 공간 부족, 사용 가능한 메모리 부족 등으로 인해 발생할 수 있습니다. 다음 명령을 사용하여 데이터베이스 서비스 상태를 확인합니다.

MySQL 데이터베이스 서버

sudo /opt/bitnami/ctlscript.sh status mysql

MariaDB 데이터베이스 서버

sudo /opt/bitnami/ctlscript.sh status mariadb

2.    앞의 명령에서 데이터베이스가 중지됨 상태로 표시되면 다음 명령을 사용하여 데이터베이스 서비스를 시작합니다.

MySQL 데이터베이스 서버

sudo /opt/bitnami/ctlscript.sh start mysql

MariaDB 데이터베이스 서버

sudo /opt/bitnami/ctlscript.sh start mariadb

3.    여전히 데이터베이스 서비스를 시작할 수 없고 시작 프로세스 중에 오류가 표시되는 경우 데이터베이스 서비스 로그를 확인하여 근본 원인을 파악하고 문제를 해결합니다. 기본 데이터베이스 서비스 로그 파일은 Lightsail 워드프레스 WordPress의 다음 위치 중 하나에 있습니다.

접근 방법 A를 따르는 MySQL 데이터베이스: /opt/bitnami/mysql/logs/mysqld.log

접근 방법 B를 따르는 MySQL 데이터베이스: /opt/bitnami/mysql/data/mysqld.log

접근 방법 A를 따르는 MariaDB 데이터베이스: /opt/bitnami/mariadb/logs/mysqld.log

접근 방법 B를 따르는 MariaDB 데이터베이스: /opt/bitnami/mariadb/data/mysqld.log

데이터베이스 성능 및 연결은 디스크 공간 부족 및/또는 사용 가능한 메모리 부족으로 인해 영향을 받을 수 있습니다. dffree 명령을 사용하여 이러한 리소스를 확인합니다.

볼륨에 공간이 부족함

볼륨의 사용 가능한 디스크 공간이 100% 또는 100% 미만인 경우 데이터베이스 서비스가 중단될 수 있습니다.

1.    다음 명령을 실행합니다.

$ sudo df -h

위의 명령은 다음 예와 같이 사용 가능한 디스크 공간을 나열합니다.

Filesystem      Size    Used     Avail      Use%    Mounted on
devtmpfs        1.9G     0       1.9G        0%     /dev
tmpfs           1.9G     0       1.9G        0%     /dev/shm
tmpfs           1.9G    400K     1.9G        1%     /run
tmpfs           1.9G     0       1.9G        0%     /sys/fs/cgroup
/dev/nvme0n1p1  8.0G    8.0G      0G        100%    /
tmpfs           389M     0       389M        0%     /run/user/1000

2.    명령 출력에 사용 가능한 공간이 충분하지 않은 것으로 표시되면 인스턴스 크기를 더 크게 조정할 수 있습니다. 또는 서버에서 불필요한 파일을 삭제하여 여유 공간을 만들 수 있습니다.

3.    사용 가능한 디스크 공간을 늘린 후 데이터베이스 서비스를 다시 시작합니다.

WordPress 설정에서 잘못된 로그인 자격 증명

WordPress에는 데이터베이스에 액세스하기 위한 사용자 이름, 암호 및 호스트를 포함하는 특정 데이터베이스 연결 문자열이 필요합니다. 이러한 항목 중 하나라도 변경된 경우 WordPress는 데이터베이스에 액세스할 수 없습니다.

1.    올바른 연결 문자열을 사용하고 있는지 확인하려면 wp-config.php 파일에서 DB_NAME, DB_HOST, DB_USER 및 DB_PASSWORD 연결 문자열 세부 정보를 가져옵니다.

2.    연결 문자열을 사용하여 터미널에서 데이터베이스에 액세스합니다. DB_NAME, DB_HOSTDB_USER를 1단계에서 얻은 값으로 바꿔야 합니다.

sudo mysql 'DB_NAME' -h 'DB_HOST' -u 'DB_USER' -p
Enter password: ********

참고: 암호를 입력할 때 다른 사용자가 볼 수 없도록 암호가 표시되지 않습니다.

3.    암호를 입력한 후 Enter 키를 누릅니다.

앞의 명령을 사용할 때 액세스 거부 오류가 발생하는 경우 일반적으로 자격 증명이 올바르지 않다는 의미입니다.

원격 DB 호스트를 사용하는 경우 wp-config.php 파일에 올바른 연결 문자열을 추가합니다. 데이터베이스가 동일한 서버에 있는 경우 DB_NAMEbitnami_wordpress이고 DB_USERbn_wordpress인지 확인합니다.

데이터베이스 사용자 암호를 재설정하려면 다음을 수행합니다.

1.    다음 명령을 사용하여 /home/bitnami/bitnami_credentials에 액세스합니다. 루트 데이터베이스 암호를 기록해 둡니다.

sudo cat /home/bitnami/bitnami_credentials

2.    다음 명령을 사용하여 MySQL/MariaDB 셸에 로그인하고 이전 명령에서 가져온 암호를 입력합니다. 데이터베이스 루트 암호를 사용하여 셸에 로그인할 수 없는 경우 암호(MySQL 또는 MariaDB)를 재설정합니다.

sudo mysql -u root -p
Enter password: ********

3.    MySQL 또는 MariaDB 셸 내에서 다음 쿼리를 실행하여 bitnami_wordpress 데이터베이스가 있는지 확인합니다.

show databases;

4.    다음 쿼리를 실행하여 bn_wordpress 데이터베이스 사용자가 있는지 확인합니다.

SELECT user FROM mysql.user;

5.    다음 쿼리를 사용하여 "bn_wordpress“ 데이터베이스 사용자의 암호를 재설정합니다.

참고: PASSWORDwp-config.php 파일에서 가져온 암호로 바꿉니다.

MySQL 데이터베이스

alter user 'bn_wordpress'@'localhost' identified by 'PASSWORD‘;
alter user 'bn_wordpress'@'127.0.0.1' identified by 'PASSWORD‘;

MariaDB 데이터베이스

alter user 'bn_wordpress'@'%' identified by 'PASSWORD‘;

참고: 위의 해결 방법 중 어느 것도 작동하지 않는 경우 백업 스냅샷을 사용하여 인스턴스를 복원할 수 있습니다.


AWS 공식
AWS 공식업데이트됨 2년 전