Jest to więc bardzo skomplikowany problem.
Ponieważ z tego, co opisałeś (bardzo szczegółowo), nadal istnieje wiele możliwych przyczyn tego problemu.
PYTANIE: Oto kilka pytań podsumowanych dla twojego (z mojego doświadczenia):
- Czy Twój
MySQL not running
? wydarzyło się podczas twojego pierwszego uruchomienia (xampp start / xampp startmysql)? - Czy po zainstalowaniu xampp w systemie Linux dostosowałeś konfigurację MySQL (domyślna etc/my.cnf)?
- JEŚLI DOSTOSOWANE Czy dostosowałeś katalog bazy danych do innej lokalizacji (domyślnie /opt/lampp/var/mysql)?
- JEŚLI NIE DOSTOSOWANE Jak wspomniałeś, masz dostęp do wiersza poleceń mysql, czy próbowałeś SQL do swojej bazy danych, czy też baza danych nie była nawet dostępna (co oznacza, że serwer mysql, nazwany jako mysqld, nie uruchomił się poprawnie)?
- Czy osobiście zainicjowałeś/zainstalowałeś bazę danych mysql (domyślnie bin/mysql_install_db)? Ok, powyższe pytania powinny dostarczyć podstawowych pomysłów na rozwiązywanie problemów.
ROZWIĄZANIE:
1. problem z dziennikiem błędów
Więc ten powinien być najprostszym problemem i może pomóc nam lepiej zidentyfikować przyczyny błędów.
Sprawdź
a) w konfiguracji MySQL (my.cnf) jaki jest Twój uruchomiony użytkownik? powinien to być parametr pod [mysqld] user=... (domyślny mysql), zakładamy, że nasza konfiguracja jest ustawiona na mysql
b) czy masz konto do uruchomienia polecenia user try terminal id -u mysql
, jeśli zwraca numer identyfikacyjny, oznacza to, że konto istnieje, w przeciwnym razie powinno powiedzieć Ci no such user
. Musisz mieć tego użytkownika, aby uruchomić serwer mysql i zapisywać dziennik błędów (patrząc na drugą część rekordu terminala, twoje konto powinno istnieć)
c) sprawdź lokalizację dziennika błędów konfiguracji MySQL (my.cnf), powinna być pod [mysqld] jako parametr log-error=... jeśli nie jest napisane, dodaj do niego (musi być pod [mysqld]).
d) sprawdź każdy katalog w pełnej ścieżce Twojego dziennika, który (na przykład /var/log/mysql/error.log)
- /var powinien mieć
read
iexecute
uprawnienia dla użytkownika mysql (co najmniej ******r-x) przekazanie uprawnienia do tworzenia pliku (wykonywania) - /var/log powinien mieć
read
iexecute
uprawnienia dla użytkownika mysql (co najmniej ******r-x) przekazanie uprawnienia do tworzenia pliku (wykonywania) - /var/log/mysql powinien mieć
read
,write
iexecute
uprawnienia dla użytkownika mysql (czyli ******rwx) uprawnienia do tworzenia i zapisu plików
Aby Twój plik error.log mógł zostać utworzony tutaj, jeśli nadal nie działa, spróbuj utworzyć go ręcznie z właścicielem jako mysql, zgrupuj jako mysql i uprawnieniami 660.
2. Stan działania serwera MySQL
można to sprawdzić na kilka sposobów
a) użyj mysql.server (domyślnie bin/mysql.server), aby wykonać mysql.server status
Komenda. Jeśli Twój serwer MySQL jest uruchomiony, powinien pokazać SUKCES! MariaDB jest uruchomiona.
b) użyj top
polecenie, aby sprawdzić, czy usługa jest uruchomiona, lub użyj top | grep "mysqld"
. mysqld
i mysqld_safe
powinien w nim.
c) zaloguj się do wiersza poleceń mysql tak jak w rekordzie terminala 4 (ta część działa) i wykonaj polecenie SHOW DATABASES;
to również powinno działać.
3. Dostosowana lokalizacja bazy danych powoduje, że Xampp mysql nie działa Jest to znacznie głębszy problem, ponieważ potwierdziłem, że serwer MySQL działa poprawnie.
zrobiłem
[[email protected] ~]# /opt/lampp/xampp status
Version: XAMPP for Linux 7.4.1
Apache is running.
MySQL is not running.
ProFTPD is running.
[[email protected] ~]# /opt/lampp/bin/mysql.server status
SUCCESS! MariaDB running (xxxx)
To pokazuje, że xampp niepoprawnie pobiera status usługi (jak inny post Baza danych MySQL uruchamia się na terminalu, ale nie na XAMPP )
Mógłbym szczegółowo prześledzić, jak działa xampp, ale w /opt/lampp/xampp
plik skryptu, znalazłem /opt/lampp/share/xampp/status
i /opt/lampp/share/statusraw
Przejdź dalej (zarówno /opt/lampp/share/xampp/status
i /opt/lampp/share/statusraw
plik),
/opt/lampp/var/mysql/` /bin/hostname`.pid mysqld
Ponieważ moja baza danych została dostosowana do zlokalizowanego katalogu, oznacza to, że plik pid nie będzie w /opt/lampp/var/mysql
, a ten status zawsze będzie zwracany niepoprawnie.
Więc zmiana tego na moją własną lokalizację pid bazy danych rozwiązała problem.