Så det här är ett mycket komplicerat problem.
För utifrån det du beskrev (mycket detaljerat) finns det fortfarande många möjliga orsaker till detta problem.
FRÅGA: Så här är några frågor sammanfattade för din (från min erfarenhet):
- Körs inte din
MySQL not running
hände under din första start (xampp start / xampp startmysql)? - När du har installerat xampp i Linux, har du anpassat MySQL-konfigurationen (standard etc/my.cnf)?
- OM ANPASSAD Anpassade du din databaskatalog till en annan plats (standard /opt/lampp/var/mysql)?
- OM INTE ANPASSAD Som du nämnde har du åtkomst till mysql-kommandoraden, har du försökt SQL din databas, eller om databasen inte ens var tillgänglig (vilket betyder att mysql-servern, som heter mysqld, inte startade ordentligt)?
- Har du personligen initierat/installerat en mysql-databas (default bin/mysql_install_db)?Ok, dessa frågor ovan bör ge en grundläggande problemlösningsidé.
LÖSNING:
1. felloggproblem
Så det här borde vara det enklaste problemet, och det kan hjälpa oss att bättre identifiera felorsakerna.
Kontrollera
a) i MySQL-konfiguration (my.cnf) vad är din köranvändare? detta bör vara en parameter under [mysqld] user=... (standard mysql), vi antar att vår konfiguration är inställd på mysql
b) har du ett konto för att köra användarförsök terminalkommandot id -u mysql
, om det returnerar ett id-nummer, så finns kontot, annars bör det tala om för dig no such user
. Du måste ha den här användaren för att köra mysql-server och skriva fellogg (genom att titta på den andra delen av din terminalpost bör ditt konto finnas)
c) kontrollera din MySQL-konfiguration (my.cnf) felloggplats, den bör vara under [mysqld] som en parameter log-error=... om detta inte skrivs, lägg till det (måste vara under [mysqld]).
d) kontrollera varje katalog i din logg fullständiga sökväg som (till exempel /var/log/mysql/error.log)
- /var bör ha
read
ochexecute
auktoritet för mysql-användare (vilket är minst ******r-x) passera skapa fil (köra) auktoritet - /var/log bör ha
read
ochexecute
auktoritet för mysql-användare (vilket är minst ******r-x) passera skapa fil (köra) auktoritet - /var/log/mysql bör ha
read
,write
ochexecute
auktoritet för mysql-användare (som är ******rwx) skapa och skriva filbehörighet
För att din error.log-fil ska kunna skapas här, om den fortfarande inte fungerar, försök skapa den manuellt med ägare som mysql, grupp som mysql och auktoritet 660.
2. MySQL-serverns körstatus
det finns flera sätt att kontrollera detta
a) använd mysql.server (default bin/mysql.server) för att göra mysql.server status
kommando. Om din MySQL-server är igång bör den visa FRAMGÅNG! MariaDB körs.
b) använd top
kommando för att kontrollera om tjänsten körs, eller använd top | grep "mysqld"
. mysqld
och mysqld_safe
bör i den.
c) logga in på mysql-kommandoraden precis som du gjorde i terminalpost 4 (detta fungerar del) och gör kommandot SHOW DATABASES;
detta borde också fungera.
3. Anpassad databasplats orsakar att Xampp mysql inte körs status Detta är ett mycket djupare problem, eftersom jag har bekräftat att MySQL-servern fungerar korrekt.
Det gjorde jag
[[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å det här visar att xampp hämtar tjänststatus felaktigt (som ett annat inlägg MySQL-databas startar på terminal men inte på XAMPP )
Jag kunde spåra i detalj hur xampp fungerar, men i /opt/lampp/xampp
skriptfil, hittade jag /opt/lampp/share/xampp/status
och /opt/lampp/share/statusraw
Gå längre in i det (båda /opt/lampp/share/xampp/status
och /opt/lampp/share/statusraw
fil),
/opt/lampp/var/mysql/` /bin/hostname`.pid mysqld
Eftersom min databas anpassades till lokaliserad katalog betyder det att pid-filen inte kommer att finnas i /opt/lampp/var/mysql
, och denna status kommer alltid att returneras felaktigt.
Så att ändra detta till min egen databas pid-plats löste problemet.