56 votes

"Failed to spawn mysql main process : unable to execute : No such file or directory"

Je suis un débutant sur le terrain de MySQL, alors soyez indulgent avec moi.

Je viens de terminer la mise à jour de 11.10 à 12.04.

Tout semble fonctionner sans accroc et tous mes logiciels et paramètres fonctionnent bien. À l'exception de MySQL.

Quand j'essaie :

sudo start mysql

Je reçois une erreur :

start: Job failed to start

Où puis-je diagnostiquer le problème ? Et (si tout va bien) - comment le résoudre ?

(J'ai désactivé le démarrage automatique suite à un conseil aquí si cela a une certaine importance)


Mise à jour 1 :

Les deux sorties de :

cat /var/log/mysql.err 
cat /var/log/mysql.log

sont vides.

Sortie de dmesg | grep mysql :

[ 1401.785141] type=1400 audit(1335619832.181:25): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=16165 comm="apparmor_parser"
[ 1401.791089] init: Failed to spawn mysql main process: unable to execute: No such file or directory

Mise à jour 2 :

Comme indiqué par AWinter ci-dessous, il semble que MySQL ait disparu automatiquement après la mise à niveau et ait dû être réinstallé.

5voto

Bob Points 940

Cela arrive parfois et bien qu'il y ait un certain nombre de problèmes différents qui peuvent empêcher mysql de démarrer, je vais écrire ici les plus courants que je connais :

REMARQUE - Pour expliquer les problèmes les plus courants, je suppose que vous avez déjà essayé de supprimer et d'installer, ou simplement de réinstaller le service mysql de la manière suivante :

Pour installer - sudo apt-get install mysql-server mysql-client
Pour enlever - sudo apt-get remove mysql-server mysql-client
Pour purger (Supprimer les fichiers + Config) - sudo apt-get purge mysql-server mysql-client
Pour réinstaller - sudo apt-get install --reinstall mysql-server mysql-client

  1. my.cnf ne se trouve pas dans le répertoire par défaut. Il devrait être (par défaut) situé dans l'un des deux répertoires suivants /etc/my.cnf o /etc/mysql/my.cnf .

  2. Pas assez d'espace sur le disque dur où se trouvent les fichiers de données mysql. Si les bases de données deviennent trop volumineuses et occupent 100% du disque dur, le service échouera.

  3. Après la mise à niveau, vérifiez que l my.cnf est au bon endroit. En fonction de la façon dont vous avez effectué la mise à niveau ou de la version à partir de laquelle vous l'avez effectuée, il peut se trouver à l'endroit suivant /etc/my.cnf o /etc/mysql/my.cnf comme mentionné précédemment. Rappelez-vous également que le fichier peut aussi être nommé mysql.conf et pas seulement my.cnf . Cela se produit dans les cas où vous avez téléchargé le binaire à partir de mysql.com .

  4. Faire un dmesg pour voir ce que le service mysql envoie comme message d'erreur est utile puisqu'il donne l'erreur de chargement. Cela peut également indiquer pourquoi cela se produit. Si vous tapez dmesg seul dans le terminal, il vous montrera le monde. Ce que nous voulons c'est l'info sur mysql donc faites quelque chose comme ça : dmesg | grep mysql ceci vous enverra toutes les lignes qui contiennent mysql.

  5. Vérifiez que le my.cnf o mysql.conf est correct. En 12.04 MySQL est la version 5.5, en 11.10 c'est la version 5.1. Il se peut qu'il y ait des changements dans le fichier de configuration (je ne l'ai pas encore vérifié) et cela peut sembler idiot mais cela peut vous poser des problèmes.

  6. Erreurs liées à problèmes de prise sont normalement la faute de l my.cnf o mysql.conf qui pointe vers le mauvais endroit, l'erreur se présente normalement comme suit :

    Impossible de se connecter au serveur MySQL local via le socket '/var/run/mysqld/mysqld.sock'.

    L'autre source de ce problème est liée à la mysql dans /etc/init.d qu'il pointe vers le mauvais dossier parce qu'il pourrait utiliser un script plus ancien que celui nécessaire pour le mysql réel sur le système (Il pourrait ne pas avoir mis à jour correctement, n'a pas écrasé le fichier de configuration, etc ). Donc, il suffit d'éditer l'un de ces deux fichiers et de voir s'ils pointent ailleurs, puis de faire simplement un sudo service mysql restart pour vérifier si cela fonctionne.

  7. Pour avoir un meilleur aperçu des sorties d'erreur spécifiques de mysql, procédez comme suit :

    cat /var/log/mysql.err - Il vous montrera les erreurs mysql. Je le ferais comme ceci cat /var/log/mysql.err | less si vous voyez trop d'informations défiler depuis less vous aidera à faire défiler votre chemin à travers la sortie de cat .

    Il en va de même pour cat /var/log/mysql.log Si vous voyez l'erreur, peut-être que le fait de l'indiquer dans la question ou dans un commentaire permettra de répondre plus rapidement.

  8. Si vous souffrez de problèmes de connexion et que le service est en cours d'exécution, essayez de voir si le pare-feu du serveur autorise les connexions via le port 3306 (connexions entrantes). Ensuite, vérifiez si le routeur (s'il existe) n'a pas bloqué le port 3306. En fait, faites un test réseau pour voir d'où vient le problème lié au port attribué à mysql.

Si tout est bon, pour tester si le service mysql fonctionne, tapez service mysql status

En dernier recours. Si vous exécutez mysql mais que vous ne pouvez pas vous connecter, essayez ce qui suit :

  1. Arrêtez le serveur MySQL :

    sudo /etc/init.d/mysql stop o sudo service mysql stop

  2. Commencez le mysqld service manuel avec configuration manuelle

    sudo mysqld --skip-grant-tables &

    (N'oubliez pas d'ajouter le & sinon vous devrez ouvrir un autre terminal. Le & envoie le processus en arrière-plan et vous pouvez le tuer en utilisant le même terminal).

  3. Connectez-vous à la base de données mysql en tant que RACINES

    mysql -u root mysql

  4. Tapez ce qui suit en remplaçant le MonMotDePasse avec votre nouveau mot de passe

    UPDATE user SET Password=PASSWORD('MyPASSWORD') WHERE User='root';
    FLUSH PRIVILEGES;
    EXIT;

Cela devrait suffire pour se connecter à nouveau à votre service Mysql en tant que root. J'espère que cela vous aidera.

4voto

smokris Points 6412

J'ai eu le même problème après avoir effectué une mise à niveau vers Ubuntu Server 12.04 LTS, en exécutant les fonctions suivantes

sudo apt-get install mysql-server 

était suffisant pour le réparer, bien qu'il se soit plaint d'une vieille base de données de spotweb. J'ai corrigé cela en supprimant spotweb :

sudo apt-get purge spotweb

et de reconfigurer mysql :

sudo dpkg-reconfigure mysql-server-5.5

4voto

T. Wolf Points 21

Je vais ajouter ceci au cas où quelqu'un serait confronté à des problèmes similaires. J'ai essayé toutes les désinstallations et réinstallations sans succès. La clé pour trouver la solution était que upstart place ses journaux d'erreurs dans ce dossier.

/var/log/upstart/

pour mysql

/var/log/upstart/mysql.log

quand je l'ai ouvert, il y avait ce message

Erreur de l'analyseur AppArmor pour /etc/apparmor.d/usr.sbin.mysqld dans /etc/apparmor.d/tunables/global à la ligne 15 : Could not open tunables/home

Quand j'ai regardé dans le /etc/apparmor.d/tunables/ dossier Il manquait le fichier home dans ce dossier, j'en ai donc créé un.

gedit /etc/apparmor.d/tunables/home et copié le contenu d'un autre ordinateur qui avait ces lignes non commentées

@{HOME}=@{HOMEDIRS}/*/ /root/

@{HOMEDIRS}=/home/

quelqu'un est confronté à un problème similaire ici

https://bugs.launchpad.net/ubuntu/+source/mysql-5.5/+bug/982303

puis après cela j'ai pu redémarrer le service

2voto

svec Points 2050

Dans mon cas, c'était beaucoup plus facile que certaines réponses ici. J'ai trouvé le bug lié au launchpad et la solution était celle mentionnée dans le commentaire 9 :

sudo touch /etc/apparmor.d/local/usr.sbin.mysqld
sudo service apparmor restart

1voto

user54914 Points 31

Après la mise à niveau, j'ai constaté que mysql-server/mysql-server-5.5 n'était pas installé, ni 5.1. J'ai renommé my.cnf en my.cnf_old et j'ai essayé d'installer mysql-serven. Pendant l'installation, il y avait un message d'erreur indiquant que le mot de passe root ne pouvait pas être défini. Après cela, j'ai vérifié mes configurations, apparmor et ainsi de suite. Tout semble correct. Ma tentative suivante a été de reconfigurer mysql-server mais il s'est plaint que le paquet n'était pas complètement installé. J'ai donc décidé de le désinstaller et pendant ce temps, apt-get a corrigé le paquet et maintenant il fonctionne. Je ne sais pas pourquoi car je n'ai rien changé.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X