web-dev-qa-db-fra.com

centos: un autre démon MySQL fonctionnant déjà avec le même socket unix

J'ai une étrange erreur lors du démarrage du service mysqld:

Another MySQL daemon already running with the same unix socket.

J'ai essayé de lister les services en cours d'exécution et de les arrêter, mais la même erreur se produit lors du démarrage du service mysqld.

Je peux essayer de supprimer mysqld et de le réinstaller, mais est-ce que cela supprimera également la base de données?

77
Mas

Pour éviter le problème, vous devez exécuter un arrêt en douceur du serveur à partir de la ligne de commande plutôt que de le mettre hors tension.

# shutdown -h now

Cela arrêtera les services en cours avant de mettre la machine hors tension.

Basé sur Centos, une méthode supplémentaire pour le récupérer lorsque vous rencontrez ce problème consiste à déplacer mysql.sock:

# mv /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock.bak

# service mysqld start

Le redémarrage du service crée une nouvelle entrée appelée mqsql.sock

226
GeckoSEO

TL; DR:

Exécutez ceci en tant que root et vous serez tous ensemble:

rm $(grep socket /etc/my.cnf | cut -d= -f2)  && service mysqld start

Version plus longue:

Vous pouvez trouver l’emplacement du fichier de socket de MySQL en cherchant manuellement dans /etc/my.conf, ou simplement en utilisant

grep socket /etc/my.cnf | cut -d= -f2

Il est probable que ce soit /var/lib/mysql/mysql.sock. Puis (en tant que root, bien sûr, ou avec Sudo préfixé), supprimez ce fichier:

rm /var/lib/mysql/mysql.sock

Puis démarrez le démon MySQL:

service mysqld start

Supprimer mysqld ne résoudra pas le problème du tout. Le problème est que CentOS et RedHat ne nettoient pas le fichier sock après un crash, vous devez donc le faire vous-même. Éviter de mettre votre système hors tension est (bien sûr) également conseillé, mais vous ne pouvez parfois pas l'éviter, cette procédure résoudra donc le problème.

18
iconoclast

J'ai trouvé une solution pour quiconque dans ce problème change le répertoire de socket en un nouvel emplacement dans le fichier my.cnf

socket=/var/lib/mysql/mysql2.sock

et service mysqld start

ou la manière rapide que GeckoSEO a répondu

# mv /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock.bak

# service mysqld start
4
Mas

Ma solution à ce problème a été de laisser mysql.sock dans le répertoire/var/lib/mysql/à partir d’un arrêt définitif. Mysql pensait que cela fonctionnait déjà quand il ne fonctionnait pas.

3
user3076142

Ouvrez simplement un rapport de bogue avec votre fournisseur de système d’exploitation en lui demandant de placer le socket dans/var/run afin qu’il soit automatiquement supprimé au redémarrage. C'est un bug de garder ce socket après un redémarrage sale,/var/run est l'endroit idéal pour ce type de fichiers.

2
Paul

pour nettoyer automatiquement le fichier .sock, placez ces lignes dans le fichier /etc/init.d/mysqld immédiatement après le bloc "start)"

test -e /var/lib/mysql/mysql.sock
SOCKEXIST=$?

ps cax | grep mysqld_safe
NOPIDMYSQL=$?

echo NOPIDMYSQL $NOPIDMYSQL
echo SOCKEXIST $SOCKEXIST

if [ $NOPIDMYSQL -eq 1 ] && [ $SOCKEXIST -eq 0 ] ; then
    echo "NOT CLEAN"
    rm -f /var/lib/mysql/mysql.sock
    echo "FILE SOCK REMOVED"
else
    echo "CLEAN"
fi

cela a fonctionné pour moi. Je devais le faire parce que je n’ai pas d’onduleur et que nous avons souvent des pannes d’alimentation.

cordialement.

1
ugo

Il peut arriver que le service MySQL ne s’arrête pas correctement lors du redémarrage du système d’exploitation. Le fichier /var/lib/mysql/mysql.sock a été laissé. Cela empêche "mysqld" de démarrer.

Ces étapes peuvent aider:

1: service mysqld démarrer killall -9 mysqld_safe mysqld service mysqld start

2: rm /var/lib/mysql/mysql.sock service mysqld start

1
Vikash Kumar

Pour démarrer le service MySQL, vous pouvez supprimer '/var/lib/mysql/mysql.sock' et redémarrer le service MySQL:

Supprimez le fichier de socket:

[root@server ~]# rm /var/lib/mysql/mysql.sock
rm: remove socket `/var/lib/mysql/mysql.sock'? yes

Démarrez le service MySQL:

[root@server~]# service mysqld start
Starting mysqld:                                           [  OK  ]

Cela vous aidera à résoudre votre problème.

0
Kamesh Jungi

C'est juste dû à une terminaison anormale du service mysql. Supprimez ou sauvegardez le fichier /var/lib/mysql/mysql.sock et redémarrez mysql.

S'il vous plaît laissez-moi savoir si dans le cas où un problème ..

0
Balkrushna Patil