web-dev-qa-db-fra.com

"Échec de la création du processus principal de mysql: impossible à exécuter: aucun fichier ou répertoire de ce type"

Je suis un débutant sur le terrain MySQL alors supportez-moi.

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

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

Quand j'essaye:

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 résoudre ce problème?

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

56
radek

Vérifiez que le paquet mysql-server-5.1 a été désinstallé, il semble qu'il pourrait 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 le réinstaller.

Commencez par faire une sauvegarde de votre répertoire/var/lib/mysql/pour votre sécurité.

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

Procédez ensuite à la purge de MySQL (cela supprimera php5-mysql et phpmyadmin ainsi que plusieurs autres bibliothèques, soyez donc prêt à 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 sont toujours dans/var/lib/mysql/s'ils ne le sont pas, puis recopiez-les dans le dossier puis cliquez sur root: root

(ne les lancez 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 tels que phpmyadmin et php5-mysql.

48
AWinter
Sudo dpkg-reconfigure mysql-server-5.5
15
Kevin C. Smith

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

J'avais un fichier de configuration personnalisé qui avait été effacé lors de la mise à niveau vers 12.04 et qui définissait la taille du fichier journal sur autre chose que la configuration par défaut.

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

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

12
Corey Aufang

La plupart des erreurs apparaîtront en démarrant le serveur en mode détaillé et en regardant le résultat:

Sudo mysqld --verbose
9
Ian Mackinnon

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, ce qui libère de l’espace 2,5G. Ensuite, MySQL a démarré normalement.

6
Eye

Cela arrive parfois et bien qu'il y ait quelques problèmes différents qui pourraient empêcher mysql de démarrer, j'écrirai ici quelques-uns des problèmes les plus courants que je connaisse:

NOTE - En expliquant la plupart des problèmes courants, je suppose que vous avez déjà essayé de supprimer et d'installer ou de réinstaller simplement le service mysql de la manière suivante:

Pour installer - Sudo apt-get install mysql-server mysql-client
À 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. my.cnffile n'est pas dans le répertoire par défaut. Il devrait être (par défaut) 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 occupent 100% du disque dur, le service échouera.

  3. Après la mise à niveau, vérifiez que le fichier my.cnf se trouve au bon endroit. Selon la manière dont vous avez mis à niveau ou à partir de la version à partir de laquelle vous avez effectué la mise à niveau, il peut s'agir de /etc/my.cnf ou /etc/mysql/my.cnf, comme mentionné précédemment. Rappelez-vous également que le fichier peut également s'appeler 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 émet comme message d'erreur, car cela donne l'erreur de chargement. Cela pourrait aussi expliquer 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, alors faites quelque chose comme ceci: dmesg | grep mysql cela vous jettera toutes les 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, il s'agit de la version 5.1. Il pourrait y avoir quelques changements dans le fichier de configuration (je n’ai pas vraiment vérifié cela) et cela peut sembler idiot, mais cela peut certainement vous causer des ennuis.

  6. Les erreurs liées à problèmes de socket sont normalement la faute du fichier my.cnf ou mysql.conf pointant au mauvais endroit, elles s’afficheront 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 au fichier mysql dans /etc/init.d qu’il pointe vers le mauvais dossier car il utilise peut-être un script plus ancien que celui requis pour le mysql réel sur le système (il n’a peut-être pas été mis à jour correctement). ne pas écraser le fichier de configuration, etc.). Il suffit donc de modifier l’un de ces deux fichiers et de voir s’ils pointent ailleurs, puis de faire un Sudo service mysql restart pour vérifier si cela fonctionne.

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

    cat /var/log/mysql.err - Vous montrera les erreurs mysql. Je ferais comme ceci cat /var/log/mysql.err | less s'il vous arrive de voir trop d'informations défiler car less vous aidera à faire défiler la sortie de cat.

    Il en va de même pour cat /var/log/mysql.log Si vous voyez une erreur, le mettre dans la question ou un commentaire aidera à répondre plus rapidement à cette question.

  8. Si vous rencontrez des problèmes de connexion et que le service en cours d'exécution est utilisé, 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 ya lieu) n’a pas bloqué le port 3306. Effectuez un test de réseau pour voir d’où provient le problème lié au port attribué à mysql.

Si tout va bien, pour tester si le service mysql fonctionne, saisissez service mysql status

En dernier recours. Si vous utilisez mysql mais que vous ne pouvez pas vous connecter, essayez ceci:

  1. Arrêtez le serveur MySQL:

    Sudo /etc/init.d/mysql stop ou Sudo service mysql stop

  2. Démarrez le service mysqld manuellement avec la 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 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 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 à nouveau à votre service Mysql en tant que root. J'espère que ça aide.

5
Luis Alvarado

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
4
RedPixel

J'ajouterai ceci au cas où quelqu'un serait confronté à des problèmes similaires. J'ai essayé toute la désinstallation et la réinstallation en vain. 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 j'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: impossible d'ouvrir 'ajustables/home'

Quand j'ai regardé dans le dossier /etc/apparmor.d/tunables/, il me manquait le fichier de base, je l'ai donc créé

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

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

@ {HOMEDIRS} =/home /

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

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

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

4
pt123

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

Sudo touch /etc/apparmor.d/local/usr.sbin.mysqld
Sudo service apparmor restart
2
Manfred Moser

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. Lors de l'installation, un message d'erreur indiquant que le mot de passe root n'a pas pu être défini est affiché. Après cela, j'ai vérifié mes configs, apparmor et ainsi de suite. Tout semblait aller bien. Ma prochaine tentative a été de reconfigurer mysql-server, mais il s'est plaint que le paquet n'ait pas été installé complètement. J'ai donc décidé de désinstaller et, pendant cette opération, le paquet est corrigé et maintenant, il fonctionne. Je ne sais pas pourquoi parce que je n'ai rien changé.

1
user54914

Dans mon cas, j'ai essayé d'installer MySQL sur une nouvelle installation d'Ubuntu 12.04, mais je ne comprenais pas pourquoi cela m'avait causé 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 effacer/supprimer, j'ai désinstallé le serveur MySQL et supprimé tous ses dossiers (/ etc/mysql/et/var/lib/mysql /), finalement grâce à une sorte de hasard, cela n'a pas donné d'erreur pendant la la réinstallation et j'ai pu définir le mot de passe et démarrer l'instance du serveur.

1
Alexian

J'avais des problèmes similaires, mais j'ai rapidement été retrouvé chez apparmor, ce dont je me souvenais bien m'avait déjà parlé auparavant.

Si vous apportez des modifications à ces paramètres et que votre système utilise apparmor, vous devrez peut-être également ajuster /etc/apparmor.d/usr.sbin.mysqld. Par exemple. ces lignes ont été ajoutées (pour autoriser un lien symbolique vers le fichier my.cnf et pour permettre la lecture du fichier lié symboliquement, vraisemblablement):

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

1
Simon Nuttall

Dans le terminal, vous pouvez l'installer à nouveau et le faire exécuter mon.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.

0
Michael

Je ne vois pas comment ajouter performance_schema sous [mysqld] dans /etc/mysql/my.conf est la cause de cet échec. Suppression de cette ligne et mysql a pu redémarrer.

Edit: Il s'avère qu'un gigaoctet de RAM ne suffit pas pour démarrer mysqld avec performance_schema activé. Je suis passé à 3 concerts et cela a bien fonctionné.

0
ThorSummoner