"Impossible de générer le processus principal de mysql: impossible à exécuter: aucun fichier ou répertoire de ce type"

55

Je suis un débutant sur MySQL, alors soyez avec moi.

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

Tout semblait fonctionner sans problèmes, et tous mes logiciels et paramètres fonctionnaient correctement. En dehors de MySQL.

Quand j'essaie:

sudo start mysql

Je reçois une erreur:

start: Job failed to start

Où puis-je éventuellement diagnostiquer le problème? Et (espérons-le) - comment le régler?

(J'ai désactivé le démarrage automatique en suivant les conseils ici si cela a de l'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 semblait que MySQL disparaissait automatiquement après la mise à niveau et devait être réinstallé.

    
posée radek 27.04.2012 - 01:06
la source

14 réponses

48

Vérifiez que le paquet mysql-server-5.1 a été désinstallé, il semble qu’il puisse persister après la mise à niveau. J'ai eu la même erreur et j'ai dû purger le serveur MySQL 5.1 et 5.5 puis réinstaller.

Faites d'abord une sauvegarde de votre répertoire / var / lib / mysql / juste pour être sûr.

sudo cp -R /var/lib/mysql/ ~/mysql

Ensuite, purgez MySQL (cela supprimera php5-mysql et phpmyadmin ainsi que plusieurs autres bibliothèques, alors préparez-vous à réinstaller certains éléments après cela.

sudo apt-get purge mysql-server-5.1 mysql-common

Supprimez le dossier / etc / mysql / et son contenu

sudo rm /etc/mysql/ -R

Ensuite, vérifiez que vos anciens fichiers de base de données se trouvent toujours dans / var / lib / mysql / s'ils ne sont pas copiés dans le dossier puis chown root: root

(ne les exécutez que si les fichiers ne sont plus là)

sudo mkdir /var/lib/mysql/
sudo chown root:root /var/lib/mysql/ -R
sudo cd ~/mysql/
sudo cp * /var/lib/mysql/ -R

Ensuite, installez le serveur mysql

sudo apt-get install mysql-server

Enfin, réinstallez tous les paquets manquants comme phpmyadmin et php5-mysql.

    
réponse donnée AWinter 27.04.2012 - 05:47
la source
15
sudo dpkg-reconfigure mysql-server-5.5
    
réponse donnée Kevin C. Smith 05.05.2012 - 18:10
la source
12

J'avais le même problème et pour moi, les fichiers journaux InnoDB avaient une taille différente de celle attendue par mysql, et ont échoué silencieusement lors de la mise à niveau.

J'ai un fichier de configuration personnalisé qui a été effacé lors de la mise à niveau vers la version 12.04, qui définit la taille des fichiers journaux à une valeur autre que la configuration par défaut.

Vous devez supprimer les fichiers: / var / lib / mysql / ib_logfile *

Une fois les fichiers partis, mysql peut maintenant lancer et créer de nouveaux fichiers journaux de la taille par défaut.

    
réponse donnée Corey Aufang 27.04.2012 - 22:58
la source
9

La plupart des erreurs apparaîtront en démarrant le serveur en mode non-démon détaillé et en regardant la sortie:

sudo mysqld --verbose
    
réponse donnée Ian Mackinnon 13.10.2012 - 23:42
la source
6

J'ai eu le même problème, mais aucune des réponses ci-dessus ne m'a aidé. Donc, comme dernier espoir, j'ai essayé de libérer de l'espace disque. Je supprime simplement les fichiers journaux inutiles de / var / log qui ont libéré de l'espace 2.5G. Ensuite, MySQL a démarré normalement.

    
réponse donnée Eye 03.08.2012 - 04:27
la source
5

Cela arrive parfois et bien que quelques problèmes différents puissent faire que mysql ne démarre pas, je vais écrire ici quelques-uns des plus courants que je connaisse:

REMARQUE - Étant donné que j'explique 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 comme suit:

Pour installer - sudo apt-get install mysql-server mysql-client
Pour supprimer - sudo apt-get remove mysql-server mysql-client
Pour purger (supprimer des fichiers + Config) - sudo apt-get purge mysql-server mysql-client
À réinstaller - sudo apt-get install --reinstall mysql-server mysql-client

  1. Le fichier my.cnf n'est pas dans le répertoire par défaut. Ce devrait être (Par défaut) être situé dans /etc/my.cnf ou /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 prennent 100% du disque dur, le service échouera.

  3. Après la mise à niveau, vérifiez que le fichier my.cnf est au bon endroit. Selon la manière dont vous avez effectué la mise à niveau ou la version à partir de laquelle vous avez effectué la mise à niveau, cela peut être en /etc/my.cnf ou /etc/mysql/my.cnf comme mentionné précédemment. Rappelez-vous également que le fichier peut également être nommé mysql.conf et pas seulement my.cnf . Cela se produit dans les cas où vous avez téléchargé le binaire depuis mysql.com .

  4. Faire un dmesg pour voir ce que le service mysql lance est un message d'erreur car cela donne l'erreur de chargement. Il pourrait également dire pourquoi cela se produit. Si vous tapez dmesg seul dans le terminal, il vous montrera le monde. Ce que nous voulons, ce sont les informations sur mysql, donc faites quelque chose comme ceci: dmesg | grep mysql cela vous lancera des lignes contenant mysql.

  5. Vérifiez que le fichier my.cnf ou mysql.conf est correct. Dans 12.04 MySQL est la version 5.5, dans 11.10 c'est la version 5.1. Il pourrait y avoir des modifications dans le fichier de configuration (cela n’a pas encore été vérifié) et cela peut paraître idiot mais cela peut certainement vous causer des problèmes.

  6. Les erreurs liées aux problèmes de socket sont normalement la faute du fichier my.cnf ou mysql.conf pointant vers le mauvais endroit, leur erreur sera normalement:

      

    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 au fichier mysql dans /etc/init.d qu’il pointe vers le mauvais dossier car il pourrait utiliser un script plus ancien que celui requis pour le mysql réel du système ( peut ne pas avoir mis à jour correctement, n'a pas écraser le fichier de configuration, etc.). Donc, modifiez simplement l'un de ces deux fichiers et voyez s'ils pointent ailleurs et faites simplement un sudo service mysql restart pour vérifier si cela fonctionne.

  7. Pour mieux voir les sorties spécifiques à l’erreur de mysql, procédez comme suit:

    cat /var/log/mysql.err - Vous montrera les erreurs mysql. Je le ferais comme ceci: cat /var/log/mysql.err | less si vous voyez trop d’informations, puisque less vous aidera à parcourir la sortie de cat .

    Même chose pour cat /var/log/mysql.log Si vous voyez l'erreur, il est possible que vous la mettiez dans la question ou qu'un commentaire vous aidera à y répondre plus rapidement.

  8. Si vous rencontrez des problèmes de connexion et le service qu’il exécute, essayez de voir si le pare-feu du serveur autorise les connexions via le port 3306 (connexions entrantes). Vérifiez ensuite si le routeur (s'il s'applique) n'a pas bloqué le port 3306. Faites un test de réseau pour voir d'où provient le problème lié au port attribué à mysql.

Si tout est bon, tester si le service mysql est exécuté 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 ou sudo service mysql stop

  2. Démarrez manuellement le service mysqld avec une configuration manuelle

    sudo mysqld --skip-grant-tables &

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

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

    mysql -u root mysql

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

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

Cela devrait être suffisant pour vous connecter à votre service Mysql en tant que root à nouveau. J'espère que ça aide.

    
réponse donnée Luis Alvarado 27.04.2012 - 01:17
la source
4

J'ai eu le même problème après la mise à niveau vers Ubuntu Server 12.04 LTS, en cours d'exécution

sudo apt-get install mysql-server 

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

sudo apt-get purge spotweb

et reconfigurer mysql:

sudo dpkg-reconfigure mysql-server-5.5
    
réponse donnée RedPixel 20.05.2012 - 15:17
la source
4

J'ajouterai que si quelqu'un fait face à des problèmes similaires. J'ai essayé toutes les procédures de désinstallation et de réinstallation en vain. La clé pour trouver la solution était que les journaux d’erreurs de démarrage se trouvent dans ce dossier

/ var / log / upstart /

pour mysql

/var/log/upstart/mysql.log

quand j'ai ouvert il y avait ce message

  

Erreur d'analyse AppArmor pour /etc/apparmor.d/usr.sbin.mysqld dans   /etc/apparmor.d/tunables/global à la ligne 15: Impossible d'ouvrir   'tunables / home'

Lorsque j'ai consulté le dossier /etc/apparmor.d/tunables / Il me manquait le fichier home à cet effet, alors j'en ai créé un

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

  

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

     

@ {HOMEDIRS} = / home /

quelqu'un fait face à un problème similaire ici

lien

Ensuite, j'ai pu redémarrer le service

    
réponse donnée pt123 22.08.2014 - 13:54
la source
2

Dans mon cas, c'était beaucoup plus facile que certaines réponses ici. J'ai trouvé le bogue associé sur le tableau de bord et le correctif était tel que mentionné dans le commentaire 9:

sudo touch /etc/apparmor.d/local/usr.sbin.mysqld
sudo service apparmor restart
    
réponse donnée Manfred Moser 05.06.2012 - 06:38
la source
1

Après la mise à niveau, j'ai trouvé que mysql-server / mysql-server-5.5 n'était pas installé et ni 5.1. J'ai renommé my.cnf en my.cnf_old et j'ai essayé d'installer mysql-serven. Lors de l'installation, un message d'erreur indiquait que le mot de passe root ne pouvait pas être défini. Après cela, j'ai vérifié mes configs, apparmor et ainsi de suite. Tout semblait aller bien. Ma prochaine tentative était de reconfigurer mysql-server mais il s'est plaint que le paquet n'était pas complètement installé. J'ai donc décidé de désinstaller et au cours de cette apt-get réparé le paquet et maintenant il fonctionne. Je ne sais pas pourquoi parce que je n'ai rien changé.

    
réponse donnée user54914 27.04.2012 - 12:38
la source
1

J'avais des problèmes similaires, mais j'ai été rapidement repéré par Apparmor, ce dont je me souvenais m'avait déjà donné ce problème auparavant.

Si vous modifiez ces paramètres et que votre système utilise apparmor, vous pouvez également besoin d'ajuster /etc/apparmor.d/usr.sbin.mysqld. Par exemple. ces lignes ont été ajoutées (pour permettre un lien symbolique vers le fichier my.cnf, et pour permettre la lecture du fichier symlinked):

/ usr / sbin / mysqld {     ...   /etc/mysql/*.cnf lr,   /path/to/symlinked/my.cnf r,     ...  }

    
réponse donnée Simon Nuttall 29.04.2012 - 13:50
la source
1

Dans mon cas, j'ai essayé d'installer MySQL sur une nouvelle installation d'Ubuntu 12.04, mais je ne comprenais pas pourquoi cela me donnait une erreur lors de la définition du mot de passe pour l'utilisateur 'root'. J'ai essayé toutes les solutions ci-dessus, mais rien à faire.

Ensuite, j'ai décidé de tout purger / supprimer, j'ai désinstallé le serveur MySQL et supprimé tous ses dossiers (/ etc / mysql / et / var / lib / mysql /), éventuellement grâce à une sorte de hasard. erreur lors de la réinstallation et j'ai pu définir le mot de passe et démarrer l'instance du serveur.

    
réponse donnée Alexian 10.07.2012 - 10:22
la source
0

Dans le terminal, vous pouvez l’installer à nouveau et le lancer avec my.cnf vous pouvez taper:

sudo apt-get install mysql-server-5.1
sudo apt-get --reconfigure mysql-server-5.1
sudo apt-get update
sudo start mysql my.cnf

cela pourrait fonctionner de cette façon.

    
réponse donnée Michael 06.05.2014 - 20:46
la source
0

J'éprouve des difficultés à ce que l'ajout de performance_schema sous [mysqld] dans /etc/mysql/my.conf provoque cet échec. Supprimé cette ligne et mysql a pu redémarrer.

Modifier: Il s'avère qu'un seul ram de ram ne suffit pas pour démarrer mysqld avec performance_schema activé. J'ai rencontré 3 concerts et ça a bien fonctionné.

    
réponse donnée ThorSummoner 09.10.2015 - 00:39
la source

Lire d'autres questions sur les étiquettes