Prova questo comando,
sudo service mysql start
Per trovare tutti i file socket sul tuo sistema esegui:
sudo find / -type s
Il mio sistema server Mysql aveva il socket aperto a /var/lib/mysql/mysql.sock
Una volta individuato dove viene aperto il socket, aggiungi o modifica la riga nel tuo file /etc/my.cnf con il percorso del file socket:
socket=/var/lib/mysql/mysql.sock
A volte lo script di avvio del sistema che ha avviato l'eseguibile della riga di comando specifica un flag --socket=path
. Questo flag potrebbe sovrascrivere la posizione my.cnf e ciò risulterebbe in un socket non trovato dove il file my.cnf indica che dovrebbe essere. Quindi, quando provi a eseguire il client della riga di comando mysql, leggerà my.cnf per trovare il socket, ma non lo troverà poiché devia da dove il server ne ha creato uno. Quindi, a meno che non ti interessi dove risiede il socket, la semplice modifica di my.cnf in modo che corrisponda dovrebbe funzionare.
Quindi, arrestare il processo mysqld. Il modo in cui lo fai varia a seconda del sistema.
Se sei un super utente nel sistema Linux, prova uno dei seguenti metodi se non conosci il metodo specifico utilizzato dalla configurazione di Mysql:
service mysqld stop
/etc/init.d/mysqld stop
mysqladmin -u root -p shutdown
- Alcuni sistemi non sono configurati per avere un modo elegante per arrestare mysql (o per qualche motivo mysql non risponde) e puoi forzare la terminazione di mysql con:
- Un passaggio:
pkill -9 mysqld
- Due passaggi (meno preferito):
- Trova l'id del processo di mysql con
pgrep mysql
ops aux | grep mysql | grep -v grep
- Supponendo che l'ID del processo sia
4969
terminare conkill -9 4969
- Trova l'id del processo di mysql con
- Un passaggio:
Dopo aver fatto questo potresti voler cercare un file pid in /var/run/mysqld/
ed eliminalo
Assicurati che le autorizzazioni sul tuo socket siano tali che qualunque utente mysqld sia in esecuzione come può leggere/scrivere su di esso. Un semplice test consiste nell'aprirlo in lettura/scrittura completa e vedere se funziona ancora:
chmod 777 /var/run/mysqld/mysqld.sock
Se questo risolve il problema, puoi personalizzare le autorizzazioni e la proprietà del socket secondo necessità in base alle tue impostazioni di sicurezza.
Inoltre, la directory in cui risiede il socket deve essere raggiungibile dall'utente che esegue il processo mysqld.
Questo errore si verifica a causa di più installazioni di mysql. Eseguire il comando:
ps -A|grep mysql
Uccidi il processo usando:
sudo pkill mysql
e quindi esegui il comando:
ps -A|grep mysqld
Uccidi anche questo processo eseguendo:
sudo pkill mysqld
Ora sei completamente impostato, basta eseguire i seguenti comandi:
service mysql restart
mysql -u root -p
Avere mysql ancora ben funzionante