MySQL ne démarre pas!

12

J'obtiens cette erreur lorsque j'essaie de me connecter à MySQL à partir de la ligne de commande:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

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

sudo /etc/init.d/mysql start

et je reçois ce message:

* Starting MySQL database server mysqld [fail] 

Où dois-je chercher / que dois-je faire pour démarrer MySQL? J'utilise Ubuntu 8.04 et j'ai installé MySQL via apt-get. J'ai pu le démarrer et l'utiliser à quelques reprises, donc je ne sais pas pourquoi il a juste cessé de fonctionner.

Mise à jour: lors de l'exécution de l'état sudo /etc/init.d/mysql, je reçois le message:

* MySQL is stopped.

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

Andrew
la source
que se passe-t-il lorsque vous sudo /etc/init.d/mysql status
emgee

Réponses:

10

Sur Ubuntu 12.04, j'ai eu ce même problème après avoir changé la taille des tampons dans le fichier /etc/mysql/my.cnf, je pense que je me suis un peu laissé emporter. Quoi qu'il en soit, après avoir essayé de les ramener au paramètre par défaut, MySQL ne démarre toujours pas.

J'ai essayé plusieurs méthodes différentes pour le résoudre, j'ai remarqué que /var/run/mysql/mysql.sock était manquant. Cela pourrait être un problème, vous pouvez donc y vérifier et s'il est manquant, vous pouvez le remplacer en procédant comme 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 peut l'être pour certains.

Ce que je devais faire était de réinstaller complètement MySQL, pour ce faire, vous devrez utiliser la commande sudo. Les étapes pour supprimer et réinstaller complètement 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 éventuellement utiliser aptitude, en remplaçant apt-get --purge par aptitude

Nettoyer

sudo apt-get autoremove
sudo apt-get autoclean

Supprimer le répertoire MySQL

sudo rm -rf /etc/mysql

Installez MySQL

sudo apt-get install mysql-server mysql-client

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

sudo service mysql status

Tu devrais voir

mysql start/running, process xxxxx

J'espère que cela aide et j'ai pensé ajouter après avoir fait toutes mes bases de données et tables là où elles étaient encore disponibles, mais 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 également la réinstaller.

sudo apt-get install php5-mysql
Kyle Coots
la source
Cela a fonctionné pour moi, mais j'ai dû le changer en: sudo touch /var/run/mysqld/mysqld.socket je l'ai découvert depuis la fin de /var/log/syslog (par exemple, changer pour mysqld)
Programster
C'est /var/run/mysqldou /var/run/mysql?
CMCDragonkai
toucher le fichier chaussette est une mauvaise idée - vous avez créé un fichier normal, alors que c'est vraiment un socket, qui est un type spécial de fichier.
Criggie
3

AVERTISSEMENT: C'est dangereux, votre mysql ne sera PAS sûr et n'importe qui pourra connecter, éditer, etc. vos tables, ne laissez pas votre serveur fonctionner avec cette commande.

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

Si cela fonctionne, il peut y avoir des problèmes avec votre schéma_information ou vos tables mysql. Si cela ne fonctionne pas, quelque chose ne va pas avec votre installation.

lilott8
la source
1
C'est bien, cela vous donne des erreurs détaillées dans syslog. La commande a changé, sur Ubuntu 12.04 c'estsudo /usr/bin/mysqld_safe --user=mysql --skip-grant-tables
newz2000
3

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

df -h

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

Aidan Fitzpatrick
la source
3

J'ai également récemment rencontré ce problème après la mise à jour d'ubuntu. Je ne sais pas encore exactement quel est le problème. Un problème qui a fonctionné pour le moment pour faire fonctionner mysql était de faire:

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

Cela le fait fonctionner, indiquant que l'apparmeur a arrêté l'exécution de mysql et expliquant pourquoi les journaux sont vides probablement aussi: mysql n'était pas autorisé à s'exécuter.

Cela reste un problème étrange, car jusqu'à présent, il n'y a pas de "plaintes" à ce sujet /var/log/apparmor, et la seule entrée d'audit dans kern.log est de changer le profil en mode de plainte.

Notez qu'en faisant cela, j'ai également ajouté un /etc/apparmor.d/local/usr.sbin.mysqlfichier (vide) car la commande aa-plaint s'est plainte de ne pas trouver ce fichier.

user143757
la source
Merci beaucoup! Après avoir failli arracher mes cheveux, cela les a finalement corrigés.
Olathe du
3

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

Il s'est avéré que cela est dû à une mémoire insuffisante.

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

sudo service apache2 restart

Avec un peu de mémoire, vous devriez pouvoir redémarrer mysql

sudo service mysql restart

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

samwize
la source
2

Jetez un œil à vos fichiers journaux. Sur Debian au moins, vous obtenez les connexions mysql * /var/log.

innaM
la source
3
mysql.err et mysql.log sont tous deux vides
Andrew
1

Eu ce même problème, il s'avère que la solution me fixait en face. Le lecteur était plein. Vous n'avez pas de journaux car il n'y a pas où les écrire .....

codeur de bateau
la source
0

Le même problème me tourmentait depuis des lustres sur un Ubuntu 12.04 Digital Ocean VPS avec mysql 5.6 installé à partir d'un PPA. Les symptômes étaient que le fichier mysql.sock /var/run/mysqld/mysql.sockétait supprimé mais jamais recréé, donc je devais exécuter manuellement les commandes suivantes à chaque mise à jour de mysql ou redémarrage du serveur:

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

C'était de la réponse de Kyle C (sauf avec mysqld au lieu de mysql). À la fin, j'ai rétrogradé à mysql 5.5 qui vient quand vous exécuteriez normalement une sudo apt-get install mysql-servercommande. Mais ce n'était pas simple alors voici ce que je devais faire:

# Manually get mysql running if it is not
sudo touch /var/run/mysqld/mysql.sock
sudo chown mysql /var/run/mysqld/mysql.sock
sudo service mysql start

# take a dump of all databases 
# we are going to remove the mysql files so don't skip this)
mysqldump -u root -p > all-databases.sql

# Completely remove mysql
sudo apt-get remove --purge mysql-server mysql-client mysql-common
sudo apt-get autoremove
sudo apt-get autoclean

# Remove mysql 5.6 from debs (otherwise it will reinstall 5.6)
rm /etc/apt/sources.list.d/ondrej-(mysql something please check)

# remove a flag that would prevent the installation
# because it is seen as a downgrade
sudo rm /var/lib/mysql/debian-5.6.flag

# I had to remove the mysql files as well
# reference http://ubuntuforums.org/showthread.php?t=1998260&page=3
rm -rf /var/lib/mysql
rm -rf /etc/mysql*

# Install mysql
sudo apt-get install mysql-server mysql-client mysql-common php5-mysql

# manually update the all-databases.sql file and 
# remove all STATS_PERSISTENT clauses on table creation statments

# re import the databses
mysql -u root -p < all-databases.sql

# restart apache
sudo service apache2 restart

# at this point my wordpress site stated error connecting to database.
# This was resolved by logging into mysql and running:
FLUSH PRIVILEGES

J'espère que cela aidera quelqu'un d'autre à ressentir la même douleur.

Programster
la source
0

comprendre que cela pourrait aider les autres ... alors le voici.

Je voulais migrer mon mysql 5.5 (par défaut d'ubuntu) vers le nouveau 5.7 ( je voulais
jouer avec le nouveau type JSON natif)

J'ai suivi les instructions pour installer la dernière version ....
mais MySQL ne voulait pas démarrer.

J'ai passé pas mal de temps à chercher, puis j'ai trouvé cette ligne dans /var/log/mysql/errors.log:

unknown variable 'key_buffer=16M'

et c'est quelque chose qui est défini dans /etc/mysql/my.cnfcela, pendant la mise à niveau, j'ai choisi de garder.

Donc, assez facile après ça:
remplacé ma my.cnfpar une my.cnf.dpkg-distversion située dans le même répertoire ...

Puis a dû courir

sudo mysql_upgrade -u root -p sudo service mysql restart

et maintenant MySQL est de retour et fonctionne

dGo
la source
0

Trouvé une autre variation sur ce qui peut être faux. J'ai déplacé le répertoire de données, et il s'avère que j'ai oublié de chown le répertoire pour l'utilisateur mysql, qui échoue également sans aucune sortie. Rétrospectivement faux, mais un manque de message d'erreur rend chaque problème trivial difficile à trouver.

Kdansky
la source