Nachdem ich meinen Server neu gestartet hatte, wurde alles normal gestartet, außer "mysql". Ich habe versucht, ihn manuell zu starten " /etc/init.d/mysql restart
" oder mit " service mysql restart
", es schlägt fehl
In der Protokolldatei heißt es:
Jul 16 08:13:38 localhost /etc/init.d/mysql[18136]: error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'
Jul 16 08:13:38 localhost /etc/init.d/mysql[18136]: Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!
Ich habe diesen Pfad überprüft, aber diese Socket-Datei nicht gefunden.
restart
. verwendenstart
. Möglicherweise besteht das Problem darin, dass das Stoppen fehlschlägt und nicht einmal versucht wird, es zu starten.restart
oder "stop/start
", aber kein Problem bei "Stop", da es bereits nicht läuft.Antworten:
So finden Sie alle Socket-Dateien auf Ihrem System:
Auf meinem MySQL-Serversystem war der Socket geöffnet
/var/lib/mysql/mysql.sock
Wenn Sie herausgefunden haben, wo der Socket geöffnet wird, fügen Sie die Zeile zu Ihrer
/etc/my.cnf
Datei mit dem Pfad zur Socket-Datei hinzu oder bearbeiten Sie sie :Manchmal gibt das Systemstart-Skript, das die ausführbare Befehlszeilendatei gestartet hat, ein Flag an
--socket=path
. Dieses Flag könnte denmy.cnf
Speicherort überschreiben , und dies würde dazu führen, dass ein Socket nicht dort gefunden wird, wo die Datei my.cnf angibt, dass er sein sollte. Wenn Sie dann versuchen, den mysql-Befehlszeilenclient auszuführen, liest er my.cnf, um den Socket zu finden, findet ihn jedoch nicht, da er von dem Ort abweicht, an dem der Server einen erstellt hat. Wenn Sie sich also nicht darum kümmern, wo sich der Socket befindet, sollte es funktionieren, wenn Sie die Datei my.cnf entsprechend ändern.Wenn Sie ein Superuser im Linux-System sind, gehen Sie wie folgt vor:
oder manchmal können Sie dies tun:
Nachdem Sie dies getan haben, möchten Sie möglicherweise nach einer PID-Datei suchen
/var/run/mysqld/
und diese löschenStellen Sie sicher, dass die Berechtigungen für Ihren Socket so sind, dass jeder Benutzer, den mysqld ausführt, lesen / schreiben kann. Ein einfacher Test besteht darin, es für das vollständige Lesen / Schreiben zu öffnen und zu prüfen, ob es noch funktioniert:
chmod 777 '/var/run/mysqld/mysqld.sock'
Wenn das Problem dadurch behoben wird, können Sie die Berechtigungen und den Besitz des Sockets je nach Ihren Sicherheitseinstellungen nach Bedarf anpassen.
Außerdem muss das Verzeichnis, in dem sich der Socket befindet, für den Benutzer erreichbar sein, der den mysqld-Prozess ausführt.
Referenz: /programming/11990708/error-cant-connect-to-local-mysql-server-through-socket-var-run-mysqld-mysq
quelle
Ich habe versucht, MySQL im "abgesicherten Modus" zu starten, um die Sock-Datei und die PID-Datei zu erstellen, aber es schlägt fehl, wenn ein Fehler "bind" auftritt.
quelle
bind ip
Parameter inmy.cnf
von127.0.0.1
,localhost
um meinen Tag zu rettenJa, wie oben erwähnt,
#find / -type s
suchen Sie zuerst Ihre Socket-Datei . Wenn Sie eine Datei mysqld.sock unter / var / run / mysqld / gefunden haben, überprüfen Sie, ob Instanzen von mysqld ausgeführt werden oder nicht,#netstat -anpt | grep 3306 or #ps aux | grep mysqld
wenn Sie einen laufenden Prozess gefunden haben, der sie stoppt (#kill - 9 pid) und entfernen Sie die Socket-Datei. Versuchen Sie dann, es neu zu starten, und wenn MySQL keine Socket-Datei erstellt, versuchen Sie, es wie folgt zu startenÜberprüfen Sie auch Ihre my.cnf-Datei (/etc/mysql/my.cnf) und kommentieren Sie das Feld für die Bindungsadresse. Wenn Sie ein Feld zum Überspringen des Netzwerks gefunden haben, kommentieren Sie es.
quelle