Jde tedy o velmi komplikovaný problém.
Protože z toho, co jste popsal (velmi podrobně), stále existuje mnoho možných příčin tohoto problému.
OTÁZKA: Takže zde jsou některé otázky shrnuté pro vaši (z mé zkušenosti):
- Nefunguje vaše
MySQL not running
? došlo během vašeho prvního spuštění (xampp start / xampp startmysql)? - Po instalaci xampp v Linuxu jste přizpůsobili konfiguraci MySQL (výchozí etc/my.cnf)?
- POKUD JE PŘIZPŮSOBENO Přizpůsobili jste svůj adresář databáze do jiného umístění (výchozí /opt/lampp/var/mysql)?
- POKUD NENÍ PŘIZPŮSOBENO Jak jste uvedl, máte přístup k příkazovému řádku mysql, zkusili jste SQL databázi, nebo pokud databáze nebyla ani přístupná (což znamená, že mysql server, pojmenovaný jako mysqld, se nespustil správně)?
- Osobně jste inicializovali/nainstalovali databázi mysql (výchozí bin/mysql_install_db)? Dobře, tyto výše uvedené otázky by měly poskytnout základní nápad na řešení problémů.
ŘEŠENÍ:
1. problém s protokolem chyb
Toto by tedy měl být ten nejjednodušší problém a mohl by nám pomoci lépe identifikovat příčiny chyb.
Zkontrolujte
a) v konfiguraci MySQL (my.cnf) jaký je váš běžící uživatel? toto by měl být parametr pod [mysqld] user=... (výchozí mysql), předpokládáme, že naše konfigurace je nastavena na mysql
b) máte účet pro spouštění uživatelského try terminálového příkazu id -u mysql
, pokud vrátí ID číslo, pak účet existuje, jinak by vám měl sdělit no such user
. Musíte mít tohoto uživatele, aby mohl spouštět mysql server a zapisovat chybový protokol (podíváte-li se na druhou část vašeho záznamu terminálu, váš účet by měl existovat)
c) zkontrolujte umístění chybového protokolu konfigurace MySQL (my.cnf), měl by být pod [mysqld] jako parametr log-error=... pokud toto není zapsáno, přidejte jej (musí být pod [mysqld]).
d) zkontrolujte každý adresář vaší úplné cesty protokolu (například /var/log/mysql/error.log)
- /var by měl mít
read
aexecute
oprávnění pro uživatele mysql (což je alespoň ******r-x) oprávnění vytvořit soubor (spustit) - /var/log by měl mít
read
aexecute
oprávnění pro uživatele mysql (což je alespoň ******r-x) oprávnění vytvořit soubor (spustit) - /var/log/mysql by měl mít
read
,write
aexecute
oprávnění pro uživatele mysql (což je ******rwx) vytvářet a zapisovat oprávnění k souboru
Aby zde mohl být vytvořen váš soubor error.log, pokud stále nefunguje, zkuste jej vytvořit ručně s vlastníkem jako mysql, skupinou jako mysql a autoritou 660.
2. Stav běhu serveru MySQL
existuje několik způsobů, jak to zkontrolovat
a) použijte mysql.server (výchozí bin/mysql.server) k provedení mysql.server status
příkaz. Pokud váš MySQL server běží, měl by ukazovat ÚSPĚCH! MariaDB běží.
b) použijte top
příkaz pro kontrolu, zda služba běží, nebo použijte top | grep "mysqld"
. mysqld
a mysqld_safe
měl by tam být.
c) přihlaste se do příkazového řádku mysql stejně jako v záznamu terminálu 4 (tato pracovní část) a proveďte příkaz SHOW DATABASES;
to by také mělo fungovat.
3. Přizpůsobené umístění databáze způsobuje, že Xampp mysql neběží stav Toto je mnohem hlubší problém, protože jsem potvrdil, že MySQL server běží správně.
Udělal jsem
[[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)
Takže to ukazuje, že xampp načítá stav služby nesprávně (jako jiný příspěvek Databáze MySQL se spouští na terminálu, ale ne na XAMPP )
Mohl bych podrobně vysledovat, jak xampp funguje, ale v /opt/lampp/xampp
soubor skriptu, našel jsem /opt/lampp/share/xampp/status
a /opt/lampp/share/statusraw
Jděte dále (jak /opt/lampp/share/xampp/status
a /opt/lampp/share/statusraw
soubor),
/opt/lampp/var/mysql/` /bin/hostname`.pid mysqld
Protože moje databáze byla přizpůsobena lokalizovanému adresáři, znamená to, že soubor pid nebude v /opt/lampp/var/mysql
a tento stav se vždy vrátí nesprávně.
Takže změna tohoto na mé vlastní umístění databáze pid problém vyřešila.