C'est donc un problème très compliqué.
Parce que d'après ce que vous avez décrit (très détaillé), il existe encore de nombreuses causes possibles à ce problème.
QUESTION : Voici donc quelques questions résumées pour vous (d'après mon expérience) :
- Votre
MySQL not running
s'est-il passé lors de votre premier démarrage (xampp start / xampp startmysql) ? - Après avoir installé xampp sous Linux, avez-vous personnalisé la configuration de MySQL (par défaut, etc/my.cnf) ?
- SI PERSONNALISÉ Avez-vous personnalisé votre répertoire de base de données à un emplacement différent (par défaut /opt/lampp/var/mysql) ?
- SI NON PERSONNALISÉ Comme vous l'avez mentionné, vous avez accès à la ligne de commande mysql, avez-vous essayé de SQL votre base de données, ou si la base de données n'était même pas accessible (ce qui signifie que le serveur mysql, nommé mysqld, n'a pas démarré correctement) ?
- Avez-vous personnellement initialisé/installé une base de données mysql (bin/mysql_install_db par défaut) ? Ok, ces questions ci-dessus devraient fournir une idée de dépannage de base.
SOLUTION :
Donc, celui-ci devrait être le problème le plus simple, et cela pourrait nous aider à mieux identifier les causes de l'erreur.
Vérifier
a) dans la configuration MySQL (my.cnf), quel est votre utilisateur courant ? cela devrait être un paramètre sous [mysqld] user=... (mysql par défaut), nous supposons que notre configuration est définie sur mysql
b) avez-vous un compte pour exécuter la commande utilisateur try terminal id -u mysql
, s'il renvoie un numéro d'identification, alors le compte existe, sinon il devrait vous dire no such user
. Vous devez avoir cet utilisateur pour exécuter le serveur mysql et écrire le journal des erreurs (en regardant la deuxième partie de votre enregistrement de terminal, votre compte devrait exister)
c) vérifiez l'emplacement de votre journal d'erreurs de configuration MySQL (my.cnf), il devrait être sous [mysqld] en tant que paramètre log-error=... si ce n'est pas écrit, ajoutez-le (doit être sous [mysqld]).
d) vérifiez chaque répertoire du chemin complet de votre journal qui (par exemple /var/log/mysql/error.log)
- /var devrait avoir
read
etexecute
autorité pour l'utilisateur mysql (qui est au moins ******r-x) passer l'autorité de création de fichier (exécution) - /var/log doit avoir
read
etexecute
autorité pour l'utilisateur mysql (qui est au moins ******r-x) passer l'autorité de création de fichier (exécution) - /var/log/mysql doit avoir
read
,write
etexecute
autorité pour l'utilisateur mysql (qui est ******rwx) autorité de création et d'écriture de fichier
Pour que votre fichier error.log puisse être créé ici, s'il ne fonctionne toujours pas, essayez de le créer manuellement avec le propriétaire comme mysql, le groupe comme mysql et l'autorité de 660.
il existe plusieurs approches pour vérifier cela
a) utilisez mysql.server (par défaut bin/mysql.server) pour faire mysql.server status
commande. Si votre serveur MySQL est en cours d'exécution, il devrait afficher SUCCESS ! MariaDB est en cours d'exécution.
b) utilisez top
commande pour vérifier si le service est en cours d'exécution, ou utilisez top | grep "mysqld"
. mysqld
et mysqld_safe
devrait dedans.
c) connectez-vous à la ligne de commande mysql comme vous l'avez fait dans l'enregistrement du terminal 4 (cela fonctionne en partie) et exécutez la commande SHOW DATABASES;
cela devrait également fonctionner.
j'ai fait
[[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)
Cela montre donc que xampp récupère l'état du service de manière incorrecte (comme un autre message La base de données MySQL démarre sur Terminal mais pas sur XAMPP )
Je pourrais retracer en détail le fonctionnement de xampp, mais dans /opt/lampp/xampp
fichier de script, j'ai trouvé /opt/lampp/share/xampp/status
et /opt/lampp/share/statusraw
Allez plus loin (à la fois /opt/lampp/share/xampp/status
et /opt/lampp/share/statusraw
fichier),
/opt/lampp/var/mysql/` /bin/hostname`.pid mysqld
Comme ma base de données a été personnalisée dans un répertoire localisé, cela signifie que le fichier pid ne sera pas dans /opt/lampp/var/mysql
, et ce statut retournera toujours de manière incorrecte.
Donc, changer cela dans mon propre emplacement de pid de base de données a résolu le problème.