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?
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
Exécutez ceci en tant que root et vous serez tous ensemble:
rm $(grep socket /etc/my.cnf | cut -d= -f2) && service mysqld start
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.
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
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.
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.
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.
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
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.
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 ..