ownCloud 10에서 MySQL을 사용할 때 발생하는 "데이터베이스 연결 실패" 오류 해결 방법

ownCloud 10에서 "데이터베이스에 연결하지 못했습니다" 오류를 가장 빠르게 해결하는 방법은 ownCloud 서버 자체에서 동일한 MySQL 계정, 데이터베이스 이름 및 호스트를 사용하여 로그인해 보는 것입니다. 로그인에 실패하면 MySQL 가용성, 네트워크 액세스, 자격 증명 또는 권한 문제를 먼저 해결하십시오. 로그인에 성공하면 ownCloud의 설정 config/config.php, PHP pdo_mysql확장 프로그램, 그리고 PHP가 의도한 소켓 또는 TCP 연결을 사용하고 있는지 확인하십시오.

이 가이드는 Linux 환경에서 MySQL 또는 MariaDB를 사용하는 기존 ownCloud Server 10 설치를 다룹니다. 서비스 이름과 패키지 명령어는 운영 체제 및 설치 유형에 따라 다를 수 있습니다. 운영 체제 환경 설정을 수정하기 전에 구성 및 데이터베이스를 백업하십시오. 데이터베이스 암호는 절대로 이슈에 공유하거나 공개 셸 대화 기록에 붙여넣지 마십시오.

오류 메시지는 무엇을 알려주나요?

해당 메시지는 증상일 뿐 진단이 아닙니다. 오류 발생 시 ownCloud 로그와 웹 서버 또는 PHP 로그를 확인하십시오. 근본적인 예외 사항에는 드라이버 누락, 연결 거부, 로그인 거부 또는 알 수 없는 데이터베이스가 포함될 수 있습니다. ownCloud의 Linux 데이터베이스 가이드에서는 PHP pdo_mysql확장 프로그램이 필요하며 MySQL이 로컬에 있는 경우 소켓 설정이 중요하다고 명시하고 있습니다. 또한 MySQL 명령줄 클라이언트를 사용하여 액세스를 테스트해 볼 것을 권장합니다.

메시지 또는 단서점검할 가능성이 높은 지역
could not find driver또는 PDO 드라이버 오류웹 PHP 런타임이 pdo_mysql활성화되어 있지 않습니다.
SQLSTATE[HY000] [2002]또는 "연결할 수 없습니다"MySQL이 중지되었거나, 호스트 또는 포트가 잘못되었거나, 방화벽이 TCP를 차단했거나, 소켓 경로가 잘못되었습니다.
Access denied for user비밀번호, 계정 호스트 또는 MySQL 인증 설정이 일치하지 않습니다.
Unknown database설정된 데이터베이스 이름의 철자가 틀렸거나, 누락되었거나, 계정에서 볼 수 없습니다.

정확한 오류 코드는 PHP, MySQL, MariaDB 및 운영 체제 버전에 따라 다를 수 있습니다. 오류 코드는 단서로 활용하고 아래 확인 절차를 통해 원인을 파악하십시오. MySQL의 접근 거부 관련 문서에 따르면 계정과 호스트가 일치하지 않는 것이 일반적인 원인입니다.

ownCloud 호스트가 MySQL에 연결할 수 있습니까?

MySQL이 ownCloud 서버, 다른 머신 또는 컨테이너에서 실행 중인지 확인하십시오. Linux에서는 서비스를 확인하세요. 일반적인 단위 이름은 `myMySQL` mysql과 `myMySQL` 입니다 mariadb. 서버에 설치된 단위 이름을 사용하십시오.

sudo systemctl status mysql
sudo systemctl status mariadb

비활성화된 경우, 재시작하기 전에 저널 또는 데이터베이스 오류 로그를 확인하십시오. 구성 오류, 디스크 용량 부족, 데이터베이스 복구 실패 또는 포트 충돌로 인해 시작되지 않을 수 있습니다.

sudo journalctl -u mariadb --since "30 minutes ago"
sudo systemctl start mariadb

서비스 이름을 적절하게 변경하십시오. 서비스가 실행 중이라고 해서 ownCloud가 인증할 수 있다는 것을 의미하지는 않습니다. 계정 테스트를 계속 진행하십시오.

원격 데이터베이스의 경우 ownCloud 호스트에서 DNS 및 구성된 TCP 포트를 테스트하십시오. MySQL은 일반적으로 3306번 포트를 사용하지만, 배포 환경에 따라 다른 포트를 사용할 수도 있습니다.

getent hosts db.example.net
nc -vz db.example.net 3306

검사 실패는 DNS, 라우팅, 방화벽 또는 데이터베이스 리스너 구성 문제일 수 있습니다. 가능한 경우 ownCloud 서버에서만 사설 네트워크를 통해 연결을 허용하십시오. MySQL을 공용 인터넷에 노출하여 바로가기 기능을 사용하지 마십시오.

ownCloud 호스트에서 데이터베이스 계정이 작동하나요?

ownCloud에서 사용할 동일한 데이터베이스 이름, 사용자 이름 및 대상 호스트를 사용하여 애플리케이션 서버에서 MySQL 클라이언트를 실행합니다. 이 -p옵션은 암호를 입력하지 않도록 하며, 암호를 명령 자체에 입력하지 않습니다.

mysql -u oc_app -p -h localhost owncloud

원격 데이터베이스의 경우 localhost호스트 이름으로 바꾸세요. 로그인이 성공하면 간단한 검증을 실행하세요.

SELECT DATABASE(), CURRENT_USER();
SHOW TABLES;
EXIT;

이는 기본 인증 및 선택한 데이터베이스에 대한 액세스 권한을 확인하는 절차입니다. 인증에 실패하면 정확한 오류 메시지와 MySQL에서 보고하는 사용자 이름/호스트 정보를 확인하세요. MySQL은 계정을 일치시킬 때 사용자 이름과 호스트를 함께 처리합니다. 또한 localhostLinux 환경에서는 일반적으로 Unix 소켓을 사용하지만, 특정 환경에서는 127.0.0.1TCP 연결을 강제한다는 점에 유의하세요. ownCloud 구성에서 사용하는 것과 동일한 연결 방식을 테스트해 보세요.

mysql -u oc_app -p -h 127.0.0.1 owncloud

ownCloud 데이터베이스 설정이 올바른가요?

ownCloud 설치 디렉터리에서 활성화된 데이터베이스를 확인하십시오 config/config.php. ownCloud 구성 참조에는 데이터베이스 유형, 이름, 사용자 및 암호 설정이 나와 있으며, 데이터베이스 가이드에는 호스트와 테이블 접두사도 표시됩니다. 일반적인 MySQL 구성은 다음과 같습니다.

'dbtype' => 'mysql',
'dbname' => 'owncloud',
'dbuser' => 'oc_app',
'dbpassword' => 'REDACTED',
'dbhost' => 'localhost',
'dbtableprefix' => 'oc_',

맞춤법 오류, 의도치 않은 공백, 오래된 암호, 대소문자가 다른 데이터베이스 이름 또는 잘못된 서버를 가리키는 호스트가 있는지 확인하십시오. 인스턴스 암호와 데이터 디렉터리를 포함한 파일의 나머지 부분은 그대로 유지하십시오. 전체 구성을 이 예시로 바꾸지 마십시오.

편집 후, 설치된 PHP 바이너리를 사용하여 파일이 유효한 PHP 파일인지 확인하십시오.

php -l /var/www/owncloud/config/config.php

설치 경로가 다를 수 있습니다. 접근을 제한하십시오 config.php. 해당 파일에는 데이터베이스 자격 증명 및 기타 민감한 값이 포함되어 있습니다.

웹 애플리케이션에서 PHP의 MySQL 드라이버가 활성화되어 있습니까?

ownCloud 10의 데이터베이스 가이드를 사용하려면 pdo_mysqlPHP 버전과 로드된 모듈을 확인해야 합니다.

php -v
php -m | grep -i pdo_mysql

해당 모듈이 누락된 경우, 사용 중인 PHP 버전에 맞는 MySQL PDO 패키지를 설치한 다음 웹 서버 또는 PHP-FPM 풀을 재시작하거나 다시 로드하십시오. 패키지 이름은 Ubuntu, Debian, SUSE, Red Hat 및 컨테이너 이미지에 따라 다를 수 있습니다. 명령줄 PHP에서 활성화된 모듈이 Apache 또는 PHP-FPM에서는 활성화되지 않을 수 있으므로 웹 런타임의 PHP 구성도 확인하십시오. PHP 구성 정보가 노출되는 공개 진단 페이지를 남겨두지 마십시오.

소켓이나 호스트 설정이 잘못된 것일까요?

Linux 환경에서 MySQL 클라이언트는 Unix 소켓을 사용하는 localhost반면, 127.0.0.1PHP는 TCP를 사용합니다. MySQL이 동일한 시스템에 설치되어 있는 경우, PHP의 mysql.default_socket소켓 파일이 데이터베이스 서버가 실제로 생성하는 소켓 파일을 가리키는지 확인하십시오. 데이터베이스 서버의 소켓 및 포트 설정과 PHP 설정, 그리고 ownCloud의 호스트 값을 비교해 보세요.

MySQL이 원격으로 연결되어 있다면, localhost해당 서버는 데이터베이스 서버가 아니라 ownCloud 머신입니다. 따라서 접근 가능한 데이터베이스 호스트 이름을 설정하고 MySQL이 지정된 인터페이스에서 수신 대기하는지 확인하십시오. 방화벽이나 로컬 전용 설정으로 인해 bind-address로컬 데이터베이스 명령은 정상적으로 작동하더라도 원격 접근이 차단될 수 있습니다. 애플리케이션 서버의 개인 IP 주소로 접근을 제한하십시오.

MySQL 계정과 권한이 클라이언트 호스트와 일치합니까?

MySQL 계정은 사용자 이름과 호스트 구성 요소로 이루어져 있습니다. 따라서 'oc_app'@'localhost'와 는 'oc_app'@'10.0.0.25'서로 다른 계정 항목입니다. 관리자 연결을 사용하여 사용 가능한 계정과 일치해야 하는 계정에 대한 권한을 확인하십시오.

SELECT User, Host FROM mysql.user;
SHOW GRANTS FOR 'oc_app'@'localhost';

계정이 없고 데이터베이스가 이미 존재하는 경우, 전용 계정을 생성하고 ownCloud 데이터베이스에 대한 권한만 부여하십시오. 샘플 데이터베이스, 호스트 및 암호를 실제 값으로 바꾸십시오.

CREATE USER 'oc_app'@'localhost' IDENTIFIED BY 'replace-with-a-strong-password';
GRANT ALL PRIVILEGES ON owncloud.* TO 'oc_app'@'localhost';

원격 데이터베이스를 사용하는 경우 계정 정의에 애플리케이션 서버의 실제 호스트를 사용하십시오. 임시방편으로 와일드카드 호스트나 전역 권한을 사용하지 마시고, ownCloud를 MySQL root 권한으로 실행하지 마십시오. 계정이 이미 존재하는 경우, 중복 계정을 생성하는 대신 계정 권한을 검토하고 암호를 재설정하십시오. ownCloud 서버에서 로그인을 다시 테스트하십시오.

수리가 완료되었는지 어떻게 확인하나요?

항목을 하나씩 변경한 후, ownCloud 호스트에서 동일한 MySQL 명령줄 로그인이 정상적으로 작동하는지, 웹 PHP 런타임이 제대로 실행되는지 pdo_mysql, 그리고 ownCloud 로그에 더 이상 연결 예외가 기록되지 않는지 확인하십시오. 사이트를 새로고침하고 인스턴스를 다시 사용할 수 있게 된 후에만 기본적인 읽기 및 쓰기 작업을 수행하십시오.

명령줄 로그인에는 성공했지만 ownCloud에 접속하지 못하는 경우, 웹 프로세스에서 사용된 호스트 형식, 계정, 데이터베이스 이름 및 PHP 런타임을 정상 작동하는 테스트 환경과 비교하십시오. 요청 발생 시점의 웹 서버 또는 PHP-FPM 로그를 확인하십시오. 이미 서버가 설치된 경우, 기존 구성을 신중하게 복구하십시오. 문제 해결을 위해 데이터베이스를 삭제하거나 설치를 다시 실행하지 마십시오.

자세한 내용은 ownCloud Server 10.16 데이터베이스 구성 및 문제 해결 가이드 , ownCloud 10.15 구성 참조 , MySQL의 공식 연결 문제 해결 및 액세스 거부 오류 가이드를 참조하십시오 . 서비스 이름, 패키지 명령 및 정확한 설정은 운영 체제 및 배포 환경에 따라 다릅니다.

댓글 남기기

네트워크에서 장치를 찾는 데 유용한 최고의 핑 스윕 도구 10가지

네트워크에서 장치를 찾는 데 유용한 최고의 핑 스윕 도구 10가지

빠른 LAN 검색, 플랫폼 간 스캔 및 IP 주소 관리를 위한 10가지 핑 스윕 도구를 비교해 보세요. 스윕을 통해 무엇을 알 수 있고 무엇을 알 수 없는지 알아보세요.

성능 추적을 위한 최고의 네트워크 관리 도구 6가지

성능 추적을 위한 최고의 네트워크 관리 도구 6가지

SNMP 적용 범위, 매핑, 알림, 배포 모델 및 비용 대비 효과를 포함하여 성능 모니터링을 위한 6가지 네트워크 관리 도구를 비교합니다.

Windows, iOS 및 Android용 최고의 Wi-Fi 분석기

Windows, iOS 및 Android용 최고의 Wi-Fi 분석기

Windows, iPhone, Android용 Wi-Fi 분석 앱들을 비교해 보세요. 채널 혼잡도, 신호 범위, 히트맵, 네트워크 문제 해결 도구 등을 포함합니다.

핑 모니터: 네트워크 가용성을 위한 7가지 무료 오픈소스 도구

핑 모니터: 네트워크 가용성을 위한 7가지 무료 오픈소스 도구

종합적인 네트워크 관리 도구부터 특정 지연 시간 측정에 특화된 도구까지, 7가지 무료 오픈 소스 핑 모니터링 도구를 비교하고 가용성, 패킷 손실률, 기록 관리에 적합한 도구를 선택하세요.

네트워킹에서의 QoS: 서비스 품질(QoS)이란 무엇이며 어떻게 작동하는가

네트워킹에서의 QoS: 서비스 품질(QoS)이란 무엇이며 어떻게 작동하는가

네트워킹에서 QoS가 무엇을 의미하는지, DSCP 마킹과 트래픽 큐가 음성, 비디오 및 비즈니스 애플리케이션의 우선순위를 어떻게 지정하는지, 그리고 QoS로 해결할 수 없는 문제는 무엇인지 알아보세요.

Nmap을 사용하여 트레이서루트를 실행하고 네트워크 경로를 읽는 방법

Nmap을 사용하여 트레이서루트를 실행하고 네트워크 경로를 읽는 방법

Nmap의 --traceroute 옵션을 사용하여 홉을 인증된 호스트로 매핑하고, 홉 및 RTT 출력을 이해하고, 과도한 스캔 없이 누락된 응답 문제를 해결할 수 있습니다.

안전한 파일 전송을 위한 최고의 SFTP 서버 소프트웨어

안전한 파일 전송을 위한 최고의 SFTP 서버 소프트웨어

Windows 및 Linux용 안정적인 SFTP 서버 소프트웨어(OpenSSH, Bitvise, SolarWinds, SFTPGo 등)를 비교해 보세요. 보안 및 파일 전송 요구 사항에 맞는 최적의 솔루션을 찾아보세요.

네트워크 팀을 위한 최고의 IP 주소 관리 도구 7가지

네트워크 팀을 위한 최고의 IP 주소 관리 도구 7가지

서브넷 검색, DNS 및 DHCP 조정, 네트워크 인벤토리, 오픈 소스 IPAM을 위한 7가지 IP 주소 관리 도구를 비교합니다.

네트워크 모니터링 모범 사례: 추적 대상 및 사용 도구

네트워크 모니터링 모범 사례: 추적 대상 및 사용 도구

SolarWinds NPM, PRTG 및 OpManager를 비교하여 명확한 장치 범위, 유용한 성능 지표, 실행 가능한 알림을 통해 실용적인 네트워크 모니터링 시스템을 구축하십시오.

기기 및 IP 주소 검색을 위한 최고의 네트워크 스캐너 도구 10가지

기기 및 IP 주소 검색을 위한 최고의 네트워크 스캐너 도구 10가지

빠른 장치 검색, 플랫폼 간 IP 스캔 및 엔터프라이즈 IPAM을 위한 네트워크 스캐너 도구를 비교하고, 각 옵션을 네트워크에 맞게 선택하는 방법에 대한 지침을 제공합니다.