Så dette er et meget kompliceret problem.
Fordi ud fra det du beskrev (meget detaljeret), er der stadig mange mulige årsager til dette problem.
SPØRGSMÅL: Så her er nogle spørgsmål opsummeret til din (fra min erfaring):
- Kører din
MySQL not running
skete under din første opstart (xampp start / xampp startmysql)? - Når du har installeret xampp i Linux, har du så tilpasset MySQL-konfigurationen (standard etc/my.cnf)?
- HVIS TILPASSET Har du tilpasset din databasemappe til en anden placering (standard /opt/lampp/var/mysql)?
- HVIS IKKE TILPASSET Som du nævnte, har du adgang til mysql-kommandolinjen, har du prøvet at SQL din database, eller hvis databasen ikke engang var tilgængelig (hvilket betyder, at mysql-serveren, kaldet mysqld, ikke startede korrekt)?
- Har du personligt initialiseret/installeret en mysql-database (default bin/mysql_install_db)?Ok, ovenstående spørgsmål bør give en grundlæggende fejlfindingside.
LØSNING:
1. fejllog problem
Så dette burde være det enkleste problem, og det kunne hjælpe os til bedre at identificere fejlårsagerne.
Tjek
a) i MySQL-konfiguration (my.cnf) hvad er din kørende bruger? dette skal være en parameter under [mysqld] user=... (standard mysql), vi antager, at vores konfiguration er sat til mysql
b) har du en konto til at køre bruger prøv terminalkommando id -u mysql
, hvis den returnerer et id-nummer, så eksisterer kontoen, ellers skulle den fortælle dig no such user
. Du skal have denne bruger til at køre mysql-server og skrive fejllog (ved at se på den anden del af din terminalpost burde din konto eksistere)
c) tjek din MySQL-konfiguration (my.cnf) fejllogplacering, den skal være under [mysqld] som en parameter log-error=... hvis dette ikke er skrevet, skal du tilføje til det (skal være under [mysqld]).
d) tjek hver mappe i din logs fulde sti, der (for eksempel /var/log/mysql/error.log)
- /var skal have
read
ogexecute
autoritet for mysql-bruger (som er mindst ******r-x) bestå oprette fil (eksekvere) autoritet - /var/log skal have
read
ogexecute
autoritet for mysql-bruger (som er mindst ******r-x) bestå oprette fil (eksekvere) autoritet - /var/log/mysql skal have
read
,write
ogexecute
autoritet for mysql-bruger (som er ******rwx) oprette og skrive filautoritet
For at din error.log-fil kunne oprettes her, hvis den stadig ikke virker, så prøv at oprette den manuelt med ejer som mysql, gruppe som mysql og autoritet for 660.
2. MySQL-serverens kørestatus
der er flere metoder til at kontrollere dette
a) brug mysql.server (standard bin/mysql.server) til at udføre mysql.server status
kommando. Hvis din MySQL-server kører, skulle den vise SUCCES! MariaDB kører.
b) brug top
kommando for at kontrollere, om tjenesten kører, eller brug top | grep "mysqld"
. mysqld
og mysqld_safe
skal i det.
c) log ind på mysql-kommandolinjen ligesom du gjorde i terminalpost 4 (denne fungerer del) og udfør kommandoen SHOW DATABASES;
dette burde også virke.
3. Tilpasset databaseplacering forårsager, at Xampp mysql ikke kører status Dette er et meget dybere problem, fordi jeg har bekræftet, at MySQL-serveren kører korrekt.
Det gjorde jeg
[[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)
Så dette viser, at xampp henter tjenestestatus forkert (som et andet indlæg MySQL-database starter på terminal men ikke på XAMPP )
Jeg kunne spore i detaljer, hvordan xampp virker, men i /opt/lampp/xampp
script-fil, fandt jeg /opt/lampp/share/xampp/status
og /opt/lampp/share/statusraw
Gå længere ind i det (begge /opt/lampp/share/xampp/status
og /opt/lampp/share/statusraw
fil),
/opt/lampp/var/mysql/` /bin/hostname`.pid mysqld
Da min database blev tilpasset til lokaliseret mappe, betyder det, at pid-filen ikke vil være i /opt/lampp/var/mysql
, og denne status vil altid returnere forkert.
Så at ændre dette til min egen database pid placering løste problemet.