Dit is dus een heel ingewikkeld probleem.
Want van wat je (zeer gedetailleerd) hebt beschreven, zijn er nog steeds veel mogelijke oorzaken voor dit probleem.
VRAAG: Dus hier zijn enkele vragen samengevat voor jou (uit mijn ervaring):
- Is uw
MySQL not running
gebeurde er tijdens je eerste opstart (xampp start / xampp startmysql)? - Heb je na het installeren van xampp in Linux de MySQL-configuratie aangepast (standaard etc/my.cnf)?
- INDIEN AANGEPAST Heb je je databasedirectory aangepast naar een andere locatie (standaard /opt/lampp/var/mysql)?
- INDIEN NIET AANGEPAST Zoals je al zei, heb je toegang tot de mysql-opdrachtregel, heb je geprobeerd je database te SQL, of was de database niet eens toegankelijk (wat betekent dat de mysql-server, genaamd mysqld, niet goed startte)?
- Heb je persoonlijk een mysql-database geïnitialiseerd/geïnstalleerd (standaard bin/mysql_install_db)?Ok, deze bovenstaande vragen zouden een basisidee moeten zijn voor het oplossen van problemen.
OPLOSSING:
Dit zou dus het eenvoudigste probleem moeten zijn, en het zou ons kunnen helpen om de oorzaken van de fout beter te identificeren.
Controleer
a) in MySQL-configuratie (my.cnf) wat is uw huidige gebruiker? dit zou een parameter moeten zijn onder [mysqld] user=... (standaard mysql), we nemen aan dat onze configuratie is ingesteld op mysql
b) heb je een account voor het uitvoeren van user try terminal commando id -u mysql
, als het een id-nummer retourneert, dan bestaat het account, anders zou het u moeten vertellen no such user
. U hebt deze gebruiker nodig om de mysql-server uit te voeren en het foutenlogboek te schrijven (door naar het tweede deel van uw terminalrecord te kijken, zou uw account moeten bestaan)
c) controleer uw MySQL-configuratie (my.cnf) foutenloglocatie, deze moet onder [mysqld] staan als een parameter log-error=... als dit niet is geschreven, voeg er dan aan toe (moet onder [mysqld] staan).
d) controleer elke map van uw log met het volledige pad dat (bijvoorbeeld /var/log/mysql/error.log)
- /var zou
read
. moeten hebben enexecute
machtiging voor mysql-gebruiker (wat op zijn minst ******r-x is) pass create file (execute) machtiging - /var/log zou
read
. moeten hebben enexecute
machtiging voor mysql-gebruiker (wat op zijn minst ******r-x is) pass create file (execute) machtiging - /var/log/mysql zou
read
. moeten hebben ,write
enexecute
machtiging voor mysql-gebruiker (dat is ******rwx) machtiging voor het maken en schrijven van bestanden
Zodat uw error.log-bestand hier kan worden gemaakt, als het nog steeds niet werkt, probeer het dan handmatig te maken met de eigenaar als mysql, groep als mysql en autoriteit van 660.
er zijn verschillende manieren om dit te controleren
a) gebruik mysql.server (standaard bin/mysql.server) om mysql.server status
te doen opdracht. Als uw MySQL-server actief is, zou deze SUCCESS moeten weergeven! MariaDB is actief.
b) gebruik top
commando om te controleren of de service actief is, of gebruik top | grep "mysqld"
. mysqld
en mysqld_safe
zou erin moeten staan.
c) log in op de mysql-opdrachtregel, net zoals u deed in terminalrecord 4 (dit werkgedeelte) en voer het commando SHOW DATABASES;
uit dit zou ook moeten werken.
Ik deed het
[[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)
Dit toont dus aan dat xampp de servicestatus onjuist ophaalt (zoals een ander bericht MySQL-database start op Terminal, maar niet op XAMPP )
Ik zou in detail kunnen nagaan hoe xampp werkt, maar in /opt/lampp/xampp
scriptbestand, vond ik /opt/lampp/share/xampp/status
en /opt/lampp/share/statusraw
Ga er verder op in (beide /opt/lampp/share/xampp/status
en /opt/lampp/share/statusraw
bestand),
/opt/lampp/var/mysql/` /bin/hostname`.pid mysqld
Omdat mijn database is aangepast aan de gelokaliseerde map, betekent dit dat het pid-bestand niet in /opt/lampp/var/mysql
staat , en deze status zal altijd foutief terugkeren.
Dus het veranderen van dit in mijn eigen database pid-locatie loste het probleem op.