12 votes

MySQL ne démarre pas!

Je reçois cette erreur en essayant de me connecter à MySQL depuis la ligne de commande :

ERROR 2002 (HY000) : Impossible de se connecter au serveur MySQL local via le socket '/var/run/mysqld/mysqld.sock' (2)

Je pense que cela signifie que MySQL n'a pas encore été démarré. Donc j'essaye de le démarrer :

sudo /etc/init.d/mysql start

et je reçois ce message :

* Démarrage du serveur de base de données MySQL mysqld [échec] 

Où dois-je regarder/que dois-je faire pour démarrer MySQL ? Je suis sur Ubuntu 8.04 et j'ai installé MySQL via apt-get. J'ai réussi à le démarrer et à l'utiliser quelques fois donc je ne sais pas pourquoi il a soudainement arrêté de fonctionner.

Mise à jour : En exécutant sudo /etc/init.d/mysql status je reçois le message :

* MySQL est arrêté.

Mise à jour #2 : Mes fichiers journaux (/var/log/mysql.log & /var/log/mysql.err) sont vides (si ce sont les bons fichiers)

0 votes

Que se passe-t-il lorsque vous faites sudo /etc/init.d/mysql status

10voto

Kyle Coots Points 231

Sur Ubuntu 12.04, j'ai eu le même problème après avoir modifié les tailles de buffer dans le fichier /etc/mysql/my.cnf, je pense que je me suis un peu emporté. Quoi qu'il en soit, même après avoir essayé de les remettre aux paramètres par défaut, MySQL refusait toujours de démarrer.

J'ai essayé plusieurs méthodes pour résoudre le problème, j'ai remarqué que /var/run/mysql/mysql.sock était manquant. Cela pourrait être un problème, donc vous pouvez vérifier à cet endroit et si c'est manquant, vous pouvez le remplacer en faisant ce qui suit :

sudo touch /var/run/mysql/mysql.sock
sudo chown mysql /var/run/mysql/mysql.sock

Cela n'a PAS résolu le problème pour moi ! Mais cela pourrait marcher pour certains.

Ce que j'ai dû faire était de réinstaller complètement MySQL, pour cela vous devrez utiliser la commande sudo. Les étapes pour supprimer complètement et réinstaller MySQL sont les suivantes :

Supprimer MySQL

sudo apt-get --purge remove mysql-server
sudo apt-get --purge remove mysql-client
sudo apt-get --purge remove mysql-common

Vous pouvez également utiliser aptitude, en remplaçant apt-get --purge par aptitude

Nettoyer

sudo apt-get autoremove
sudo apt-get autoclean

Supprimer le dossier MySQL

sudo rm -rf /etc/mysql

Installer MySQL

sudo apt-get install mysql-server mysql-client

MySQL devrait maintenant être en cours d'exécution, vous pouvez vérifier en procédant comme suit :

sudo service mysql status

Vous devriez voir

mysql start/running, process xxxxx

J'espère que cela vous aidera, et je voulais ajouter qu'après avoir fait tout cela, toutes mes bases de données et mes tables étaient toujours disponibles, cependant j'ai dû recréer les utilisateurs et les mots de passe pour ces bases de données.

Remarque : Si vous aviez l'extension mysql pour php, vous devrez aussi la réinstaller.

sudo apt-get install php5-mysql

0 votes

Cela a fonctionné pour moi mais j'ai dû le changer en : sudo touch /var/run/mysqld/mysqld.sock et j'ai découvert cela à la fin du fichier /var/log/syslog (par exemple, changer en mysqld)

0 votes

Est-ce /var/run/mysqld ou /var/run/mysql?

0 votes

Toucher le fichier sock est une mauvaise idée - vous avez créé un fichier régulier, alors qu'il s'agit vraiment d'une socket, qui est un type spécial de fichier.

3voto

Brian Points 423

AVERTISSEMENT : C'est dangereux, votre mysql NE sera PAS en sécurité et n'importe qui pourra se connecter, modifier, etc. vos tables, ne laissez pas votre serveur en cours d'exécution avec cette commande.

Essayez de le démarrer en mode sécurisé : /usr/local/mysql/bin/safe_mysqld --user=mysql --skip-grant-tables

Si cela fonctionne, il peut y avoir des problèmes avec votre information_schema ou votre table(s) mysql. Si cela ne fonctionne pas, alors quelque chose ne va pas avec votre installation.

1 votes

C'est bon, il vous donne des erreurs détaillées dans syslog. La commande a changé, sur Ubuntu 12.04 il s'agit de sudo /usr/bin/mysqld_safe --user=mysql --skip-grant-tables

3voto

Aidan Fitzpatrick Points 236

Vérifiez vos fichiers journaux comme dans les autres réponses. De plus, vérifiez que vous avez suffisamment d'espace disque (ou un espace disque disponible). MySQL peut se comporter de cette manière sur une partition vide.

df -h

Si ce n'est pas ça, consultez la documentation de MySQL sur le débogage d'un serveur. Leur myisamchk (si vous utilisez MyISAM) est particulièrement utile.

3voto

user143757 Points 31

J'ai également récemment rencontré ce problème après la mise à jour d'Ubuntu. Je ne suis pas encore sûr de ce que le problème exact est. Une solution de contournement qui a fonctionné pour le moment pour faire fonctionner MySQL était de faire :

sudo aa-complain /etc/apparmor.d/*mysql*

Cela fonctionne, ce qui indique qu'apparmor empêchait MySQL de s'exécuter, expliquant probablement pourquoi les journaux sont également vides : MySQL n'était pas autorisé à s'exécuter.

Cela reste une question étrange, car jusqu'à présent, il n'y a pas de "plaintes" à ce sujet dans /var/log/apparmor, et la seule entrée d'audit dans kern.log provient du changement de profil en mode de plainte.

Notez que en faisant cela, j'ai également ajouté un fichier (vide) /etc/apparmor.d/local/usr.sbin.mysql car la commande aa-complain se plaignait de ne pas trouver ce fichier.

0 votes

Merci beaucoup! Après avoir failli m'arracher les cheveux, cela a enfin résolu le problème.

3voto

samwize Points 131

J'ai eu le même problème avec mon droplet Digital Ocean de 512 Mo.

Il s'est avéré que cela est dû à un manque de mémoire.

Une solution immédiate est de redémarrer d'autres services pour libérer de la mémoire par exemple.

sudo service apache2 restart

Ensuite, avec suffisamment de mémoire, vous devriez pouvoir redémarrer mysql

sudo service mysql restart

La solution à long terme est soit d'obtenir plus de RAM, soit de créer de la mémoire d'échange.

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