Napraw błąd „Nie udało się połączyć z bazą danych” w ownCloud 10 z MySQL

Najszybszym sposobem na odizolowanie błędu ownCloud 10 „Nie udało się połączyć z bazą danych” jest przetestowanie tego samego konta MySQL, nazwy bazy danych i hosta na serwerze ownCloud. Jeśli logowanie się nie powiedzie, najpierw sprawdź dostępność MySQL, dostęp do sieci, dane uwierzytelniające lub uprawnienia. Jeśli się powiedzie, sprawdź rozszerzenie ownCloud config/config.php, PHP pdo_mysqli czy PHP używa właściwego gniazda lub połączenia TCP.

Ten przewodnik dotyczy istniejącej instalacji serwera ownCloud 10 z MySQL lub MariaDB w systemie Linux. Nazwy usług i polecenia pakietów różnią się w zależności od systemu operacyjnego i typu instalacji. Przed edycją ustawień produkcyjnych należy wykonać kopię zapasową konfiguracji i bazy danych. Nigdy nie udostępniaj hasła do bazy danych w zgłoszeniu ani nie wklejaj go do publicznego transkryptu powłoki.

Co mówi błąd?

Komunikat jest objawem, a nie diagnozą. Przeczytaj dziennik ownCloud oraz dziennik serwera WWW lub PHP w momencie wystąpienia awarii. Wyjątek może wskazywać na brakujący sterownik, odrzucone połączenie, odrzucone logowanie lub nieznaną bazę danych. Przewodnik ownCloud po bazach danych Linux wymaga pdo_mysqlrozszerzenia PHP i zaznacza, że ​​ustawienie gniazda ma znaczenie, gdy MySQL jest lokalny. Zaleca się przetestowanie dostępu za pomocą klienta wiersza poleceń MySQL.

Wiadomość lub wskazówkaPrawdopodobny obszar do sprawdzenia
could not find driverlub błąd sterownika PDOŚrodowisko wykonawcze PHP nie jest pdo_mysqlwłączone.
SQLSTATE[HY000] [2002]lub „Nie można nawiązać połączenia”MySQL jest zatrzymany, host lub port jest nieprawidłowy, zapora blokuje protokół TCP lub ścieżka gniazda jest nieprawidłowa.
Access denied for userHasło, host konta lub ustawienia uwierzytelniania MySQL nie są zgodne.
Unknown databaseSkonfigurowana nazwa bazy danych jest błędnie napisana, brakuje jej lub nie jest widoczna dla konta.

Dokładne kody błędów mogą się różnić w zależności od wersji PHP, MySQL, MariaDB i systemu operacyjnego. Potraktuj je jako wskazówki i potwierdź przyczynę, wykonując poniższe czynności. W dokumentacji dotyczącej odmowy dostępu do MySQL zaznaczono, że dopasowanie konta i hosta jest częstą przyczyną.

Czy host ownCloud może uzyskać dostęp do MySQL?

Sprawdź, czy MySQL działa na serwerze ownCloud, innym komputerze czy kontenerze. W systemie Linux sprawdź usługę. Typowe nazwy jednostek to mysqli mariadb; użyj tej zainstalowanej na serwerze:

sudo systemctl status mysql
sudo systemctl status mariadb

Jeśli jest nieaktywny, przed ponownym uruchomieniem sprawdź dziennik błędów dziennika lub bazy danych. Błąd konfiguracji, zapełniony dysk, nieudane odzyskiwanie bazy danych lub konflikt portów mogą uniemożliwić uruchomienie:

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

Zmień nazwę usługi odpowiednio. Uruchomiona usługa nie dowodzi, że ownCloud może uwierzytelnić konto. Kontynuuj testowanie konta.

W przypadku zdalnej bazy danych przetestuj DNS i skonfigurowany port TCP z hosta ownCloud. MySQL zazwyczaj nasłuchuje na porcie 3306, chociaż wdrożenia mogą korzystać z innego portu:

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

Nieudane punkty kontrolne wskazują na DNS, routing, zaporę sieciową lub konfigurację nasłuchu bazy danych. W miarę możliwości zezwalaj na połączenia tylko z serwera ownCloud przez sieć prywatną. Nie udostępniaj bazy danych MySQL w publicznym internecie jako skrótu.

Czy konto bazy danych działa z poziomu hosta ownCloud?

Uruchom klienta MySQL na serwerze aplikacji z tą samą nazwą bazy danych, użytkownikiem i hostem docelowym, z których powinien korzystać ownCloud. -pOpcja ta wyświetla monity prywatnie, co pozwala uniknąć podawania hasła w samym poleceniu:

mysql -u oc_app -p -h localhost owncloud

W przypadku zdalnej bazy danych zastąp localhostją nazwą hosta. Jeśli logowanie się powiedzie, uruchom nieszkodliwą weryfikację:

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

Potwierdza to podstawowe uwierzytelnienie i dostęp do wybranej bazy danych. Jeśli się nie powiedzie, odczytaj dokładny błąd oraz raport MySQL dotyczący nazwy użytkownika i hosta. MySQL traktuje nazwę użytkownika i hosta łącznie podczas dopasowywania konta. Należy również pamiętać, że localhostw systemie Linux zazwyczaj używane jest gniazdo Unix, podczas gdy 127.0.0.1wymuszany jest protokół TCP. Przetestuj tę samą metodę połączenia, której używa Twoja konfiguracja ownCloud:

mysql -u oc_app -p -h 127.0.0.1 owncloud

Czy ustawienia bazy danych ownCloud są prawidłowe?

Sprawdź aktywne elementy config/config.phpw katalogu instalacyjnym ownCloud. Dokumentacja konfiguracji ownCloud zawiera ustawienia typu bazy danych, nazwy, użytkownika i hasła; przewodnik po bazie danych zawiera również prefiks hosta i tabeli. Typowa konfiguracja MySQL wygląda następująco:

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

Sprawdź błędy ortograficzne, przypadkowe spacje, nieaktualne hasło, nazwę bazy danych z inną wielkością liter lub host wskazujący na niewłaściwy serwer. Zachowaj resztę pliku, w tym klucz tajny instancji i katalog danych. Nie zastępuj całej konfiguracji tym przykładem.

Po edycji sprawdź, czy plik jest prawidłowym PHP, korzystając z pliku binarnego PHP dla swojej instalacji:

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

Ścieżka instalacji może być inna. Ogranicz dostęp do pliku config.php; zawiera on dane uwierzytelniające bazy danych i inne poufne wartości.

Czy sterownik MySQL PHP jest włączony dla aplikacji internetowej?

Przewodnik po bazie danych ownCloud 10 wymaga pdo_mysql. Sprawdź wersję PHP i załadowane moduły:

php -v
php -m | grep -i pdo_mysql

Jeśli brakuje modułu, zainstaluj odpowiedni pakiet MySQL PDO dla swojej wersji PHP, a następnie uruchom ponownie lub przeładuj odpowiedni serwer WWW lub pulę PHP-FPM. Nazwy pakietów różnią się w systemach Ubuntu, Debian, SUSE, Red Hat i obrazach kontenerów. Moduł z włączoną obsługą PHP z poziomu wiersza poleceń może nie być włączony dla Apache lub PHP-FPM, dlatego sprawdź również konfigurację PHP środowiska uruchomieniowego. Unikaj pozostawiania publicznej strony diagnostycznej, która ujawnia informacje o konfiguracji PHP.

Czy ustawienia gniazda lub hosta mogą być nieprawidłowe?

W systemie Linux klient MySQL może używać gniazda Unix localhost, podczas gdy 127.0.0.1używa protokołu TCP. Jeśli MySQL znajduje się na tym samym komputerze, sprawdź, czy PHP mysql.default_socketwskazuje na plik gniazda, który faktycznie tworzy serwer bazy danych. Porównaj ustawienia gniazda i portu serwera bazy danych z ustawieniami PHP i wartością hosta ownCloud.

Jeśli MySQL jest zdalny, localhostto jest to maszyna ownCloud, a nie serwer bazy danych. Zamiast tego ustaw dostępną nazwę hosta bazy danych i upewnij się, że MySQL nasłuchuje na docelowym interfejsie. Zapora sieciowa lub interfejs lokalny bind-addressmogą uniemożliwić zdalny dostęp, nawet gdy lokalne polecenia bazy danych działają. Ogranicz dostęp do prywatnego adresu serwera aplikacji.

Czy konto MySQL i uprawnienia odpowiadają hostowi klienta?

Konta MySQL zawierają nazwę użytkownika i komponent hosta. W związku z tym 'oc_app'@'localhost'i 'oc_app'@'10.0.0.25'to różne wpisy kont. Użyj połączenia administracyjnego, aby sprawdzić dostępne konta i uprawnienia dla konta, które powinny się zgadzać:

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

Jeśli konto nie istnieje, a baza danych już istnieje, utwórz dedykowane konto i nadaj mu uprawnienia tylko do bazy danych ownCloud. Zastąp przykładową bazę danych, hosta i hasło swoimi rzeczywistymi wartościami:

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

W przypadku zdalnej bazy danych użyj rzeczywistego hosta serwera aplikacji w definicji konta. Unikaj używania symbolu wieloznacznego jako hosta lub uprawnień globalnych jako szybkiego rozwiązania i nie uruchamiaj ownCloud jako root MySQL. Jeśli konto już istnieje, sprawdź jego uprawnienia i zresetuj hasło celowo, zamiast tworzyć duplikaty kont. Przetestuj ponownie logowanie z serwera ownCloud.

Jak potwierdzasz naprawę?

Po zmianie jednego elementu, sprawdź, czy to samo logowanie z wiersza poleceń MySQL działa z hosta ownCloud, czy środowisko uruchomieniowe PHP ma pdo_mysql, a log ownCloud nie rejestruje już wyjątku połączenia. Przeładuj witrynę i wykonaj podstawową operację odczytu i zapisu dopiero po ponownym udostępnieniu instancji.

Jeśli logowanie z wiersza poleceń powiedzie się, ale ownCloud nadal nie działa, porównaj dokładny formularz hosta, konto, nazwę bazy danych i środowisko uruchomieniowe PHP używane przez proces webowy z działającym testem. Sprawdź logi serwera webowego lub PHP-FPM w momencie żądania. W przypadku już zainstalowanego serwera, ostrożnie napraw jego istniejącą konfigurację; nie usuwaj bazy danych ani nie uruchamiaj ponownie instalacji jako skrótu rozwiązywania problemów.

Aby uzyskać więcej informacji, zapoznaj się z przewodnikiem konfiguracji i rozwiązywania problemów bazy danych ownCloud Server 10.16 , dokumentem referencyjnym konfiguracji ownCloud 10.15 oraz oficjalnymi przewodnikami MySQL dotyczącymi rozwiązywania problemów z połączeniem i błędami odmowy dostępu . Nazwy usług, polecenia pakietów i dokładne ustawienia zależą od systemu operacyjnego i wdrożenia.

Zostaw komentarz

10 najlepszych narzędzi do pingowania w celu znajdowania urządzeń w sieci

10 najlepszych narzędzi do pingowania w celu znajdowania urządzeń w sieci

Porównaj 10 narzędzi do pingowania, które umożliwiają szybkie wykrywanie sieci LAN, skanowanie międzyplatformowe i zarządzanie adresami IP. Dowiedz się, co narzędzie pingujące może Ci powiedzieć, a czego nie.

6 najlepszych narzędzi do zarządzania siecią, umożliwiających śledzenie wydajności

6 najlepszych narzędzi do zarządzania siecią, umożliwiających śledzenie wydajności

Porównaj sześć narzędzi do zarządzania siecią służących do monitorowania wydajności, obejmujących zasięg SNMP, mapowanie, alerty, modele wdrażania i kompromisy kosztów.

Ping Monitor: 7 darmowych i otwartych narzędzi do monitorowania dostępności sieci

Ping Monitor: 7 darmowych i otwartych narzędzi do monitorowania dostępności sieci

Porównaj siedem darmowych i otwartych monitorów pingów — od kompletnych pakietów sieciowych po ukierunkowane sondy opóźnień — i wybierz odpowiedni monitor pod kątem dostępności, utraty pakietów i historii.

QoS w sieciach: czym jest jakość usług i jak działa

QoS w sieciach: czym jest jakość usług i jak działa

Dowiedz się, co oznacza QoS w sieciach, w jaki sposób oznaczenia DSCP i kolejki ruchu nadają priorytet aplikacjom głosowym, wideo i biznesowym oraz czego QoS nie jest w stanie naprawić.

Najlepsze oprogramowanie serwera SFTP do bezpiecznego przesyłania plików

Najlepsze oprogramowanie serwera SFTP do bezpiecznego przesyłania plików

Porównaj niezawodne oprogramowanie serwera SFTP dla systemów Windows i Linux, w tym OpenSSH, Bitvise, SolarWinds i SFTPGo. Znajdź rozwiązanie odpowiednie dla swoich potrzeb w zakresie bezpieczeństwa i transferu plików.

7 najlepszych narzędzi do zarządzania adresami IP dla zespołów sieciowych

7 najlepszych narzędzi do zarządzania adresami IP dla zespołów sieciowych

Porównaj siedem narzędzi do zarządzania adresami IP służących do wykrywania podsieci, koordynacji DNS i DHCP, inwentaryzacji sieci i otwartego oprogramowania IPAM.

6 najlepszych narzędzi do monitorowania serwerów Windows Server zapewniających lepszą dostępność i wydajność

6 najlepszych narzędzi do monitorowania serwerów Windows Server zapewniających lepszą dostępność i wydajność

Porównaj sześć narzędzi do monitorowania systemu Windows Server pod kątem zbierania danych systemu Windows, widoczności aplikacji, modelu wdrażania i licencjonowania, aby znaleźć odpowiednie rozwiązanie.

10 najlepszych narzędzi do skanowania sieci w celu wykrywania urządzeń i adresów IP

10 najlepszych narzędzi do skanowania sieci w celu wykrywania urządzeń i adresów IP

Porównaj narzędzia do skanowania sieciowego umożliwiające szybkie wykrywanie urządzeń, skanowanie adresów IP na wielu platformach oraz zarządzanie IPAM w przedsiębiorstwie. Znajdziesz tu wskazówki dotyczące dopasowania każdej opcji do swojej sieci.

Najlepsze praktyki monitorowania sieci: co śledzić i jakich narzędzi używać

Najlepsze praktyki monitorowania sieci: co śledzić i jakich narzędzi używać

Zbuduj praktyczny monitoring sieci z przejrzystym zakresem urządzeń, przydatnymi wskaźnikami wydajności, przydatnymi alertami oraz porównaniem SolarWinds NPM, PRTG i OpManager.

Jak używać Nmap do śledzenia trasy i odczytywania ścieżki sieciowej

Jak używać Nmap do śledzenia trasy i odczytywania ścieżki sieciowej

Użyj opcji --traceroute programu Nmap, aby mapować przeskoki do autoryzowanego hosta, zrozumieć dane wyjściowe dotyczące przeskoków i czasu RTT oraz rozwiązywać problemy z brakującymi odpowiedziami bez nadmiernego skanowania.