Ricevo il seguente errore quando provo a connettermi a mysql:
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
C'è una soluzione per questo errore? Quale potrebbe essere la ragione dietro?
Ricevo il seguente errore quando provo a connettermi a mysql:
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
C'è una soluzione per questo errore? Quale potrebbe essere la ragione dietro?
Risposte:
Ti stai connettendo a "localhost" o "127.0.0.1"? Ho notato che quando ti connetti a "localhost" viene utilizzato il connettore socket, ma quando ti connetti a "127.0.0.1" viene utilizzato il connettore TCP / IP. È possibile provare a utilizzare "127.0.0.1" se il connettore socket non è abilitato / funzionante.
/etc/hosts
file nel mio contenitore docker mi ha mostrato il nome host MySql mysql
. L'uso dello stesso nome host nella mia configurazione di connessione ha risolto il problema.
Assicurati che il tuo servizio mysql sia in esecuzione
service mysqld start
Quindi, prova una delle seguenti operazioni:
(se non hai impostato la password per mysql)
mysql -u root
se hai già impostato la password
mysql -u root -p
service mariadb start
because mariadb.org/debian-9-released-mariadb-mysql-variant
Se il tuo file my.cnf (di solito nella cartella etc) è correttamente configurato con
socket=/var/lib/mysql/mysql.sock
puoi verificare se mysql è in esecuzione con il seguente comando:
mysqladmin -u root -p status
prova a cambiare il tuo permesso nella cartella mysql. Se lavori localmente, puoi provare:
sudo chmod -R 777 /var/lib/mysql/
quello ha risolto per me
Il server MySQL non è in esecuzione o non si trova nella posizione del suo file socket (controllare my.cnf).
Molto probabilmente mysql.sock
non esiste in /var/lib/mysql/
.
Se trovi lo stesso file in un'altra posizione, quindi collega simbolicamente:
Per esempio: ce l'ho /data/mysql_datadir/mysql.sock
Passa l'utente a mysql ed eseguilo come indicato di seguito:
su mysql
ln -s /data/mysql_datadir/mysql.sock /var/lib/mysql/mysql.sock
Ciò ha risolto il mio problema
Se si utilizza un RHEL recente, potrebbe essere necessario avviare mariadb (un db mysql open source) anziché il db mysql:
yum remove mysql
yum -y install mariadb-server mariadb
service mariadb start
Dovresti quindi poter accedere a mysql nel solito modo:
mysql -u root -p
mariadb-server
e mariadb
, non dimenticare di eseguire mysql_secure_installation
per ripulire alcune impostazioni non sicure predefinite.
Nel mio caso ho spostato il file socket in un'altra posizione all'interno /etc/my.cnf
da /var/lib/mysql/mysql.sock
a/tmp/mysql.sock
Anche dopo aver riavviato il servizio mysqld, vedo ancora il messaggio di errore quando provo a connettermi.
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
Il problema riguarda il modo in cui il client è configurato. L'esecuzione della diagnostica mostrerà effettivamente il percorso socket corretto. per esempiops aux | grep mysqld
Lavori:
mysql -uroot -p -h127.0.0.1
mysql -uroot -p --socket=/tmp/mysql.sock
Non funziona:
mysql -uroot -p
mysql -uroot -p -hlocalhost
È possibile risolvere questo problema aggiungendo la stessa linea socket nella [client]
sezione all'interno di mysql config.
Modifica semplicemente /etc/my.cnf
Aggiungi le seguenti righe amy.cnf
[mysqld]
socket=/var/lib/mysql/mysql.sock
[client]
socket=/var/lib/mysql/mysql.sock
Riavvia mysql e riconnettiti
mysql -u user -p database delle password -h host;
Controlla se il tuo servizio mysqld è in esecuzione o no, se non è in esecuzione, avvia il servizio.
Se il problema non viene risolto, cerca /etc/my.cnf
e modifica come segue, dove vedi una riga che inizia con socket
. Eseguire un backup di quel file prima di eseguire questo aggiornamento.
socket=/var/lib/mysql/mysql.sock
Cambia in
socket=/opt/lampp/var/mysql/mysql.sock -u root
MariaDB, un fork di MySQL sviluppato dalla community, è diventato l'implementazione predefinita di MySQL in molte distribuzioni.
Quindi prima dovresti iniziare,
$ sudo systemctl start mariadb
Se fallisce piuttosto prova,
$ sudo systemctl start mysqld
Quindi per avviare mysql,
$ mysql -u root -p
Ad oggi, in Fedora il pacchetto si chiama mariadb
E in Ubuntu si chiama mariadb-server
.
Quindi potrebbe essere necessario installarlo se non è già installato nel sistema.
Assicurati di avere abbastanza spazio rimasto /var
. Se il demone Mysql non è in grado di scrivere ulteriori informazioni sull'unità, il server mysql non si avvia e porta all'erroreCan't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
Prendi in considerazione l'utilizzo
expire_logs_days = 10
max_binlog_size = 100M
Questo ti aiuterà a limitare l'utilizzo del disco.
innodb_buffer_pool_size
in my.cnf
. Impostarlo su un valore piccolo come innodb_buffer_pool_size = 50M
è un buon test per scartare questa ipotesi;)
Verifica se è in esecuzione un altro servizio mysql.
Assicurati di aver avviato il server:
mysql.server start
Quindi connettiti con l'utente root:
mysql -uroot
Se il tuo mysql funzionava in precedenza e si è fermato all'improvviso basta "riavviare" il server.
Stavo affrontando questo problema sul mio VPS CentOS .->
Stavo diventando costantemente
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'(2)
Ho provato tutte le tecniche, infine il riavvio del server ha risolto i problemi ->
shutdown -r now
Spero che questo ti aiuti !!
se modifichi i file in / var / lib / mysql [come copiarli o sostituirli], devi impostare il proprietario dei file su mysql, questo è così importante se il riavvio di mariadb.service non è riuscito
chown -R mysql: mysql / var / lib / mysql / *
chmod -R 700 / var / lib / mysql / *
Prima inserisci "service mysqld start" e accedi
Assicurati di aver installato correttamente il server MySQL, ho riscontrato questo errore molte volte e penso che sia complicato eseguire il debug dal socket, intendo che potrebbe essere più semplice reinstallarlo.
Se si utilizza CentOS 7, ecco il modo corretto di installarlo:
Prima di tutto, aggiungi la fonte della community mysql
yum install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
Quindi è possibile installarlo da yum install mysql-community-server
Avviarlo con systemctl: systemctl start mysqld
Il mio problema era che ho installato mysql con successo e ha funzionato bene.
Ma un giorno si è verificato lo stesso errore.
Impossibile connettersi al server MySQL locale tramite socket '/var/lib/mysql/mysql.sock' (2)
E non esisteva alcun file mysql.sock.
Questo sollution ha risolto il mio problema e mysql era di nuovo funzionante:
Accedi come root:
sudo su -
Correre:
systemctl stop mysqld.service
systemctl start mysqld.service
systemctl enable mysqld.service
Prova come root:
mysql -u root -p
mysql ora dovrebbe essere attivo e funzionante.
Spero che questo possa aiutare anche qualcun altro.
Si noti che mentre mysql legge le informazioni sulla posizione del file socket dal file my.cnf, il programma mysql_secure_installation sembra non farlo correttamente a volte.
Quindi, se sei come me e mescoli le cose in giro al momento dell'installazione, potresti entrare nella situazione in cui puoi connetterti al database con mysql bene, ma la cosa non può essere protetta (non usando comunque quello script).
Per risolvere il problema, il suggerimento di sreddy funziona bene: crea un softlink da dove lo script si aspetterebbe il socket dove si trova effettivamente. Esempio:
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
(Uso / tmp / come posizione predefinita per i socket)
Un modo per riprodurre questo errore: se intendevi connetterti a un server esterno ma invece connettiti a quello locale inesistente:
eric@dev ~ $ mysql -u dev -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through
socket '/var/lib/mysql/mysql.sock' (2)
eric@dev ~ $
Quindi devi specificare l'host in questo modo:
eric@dev ~ $ mysql --host=yourdb.yourserver.com -u dev -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 235
Server version: 5.6.19 MySQL Community Server (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+-------------------------+
| Database |
+-------------------------+
| information_schema |
| mysql |
| performance_schema |
+-------------------------+
3 rows in set (0.00 sec)
mysql> exit
Bye
eric@dev ~ $
Questo potrebbe essere un suggerimento stupido ma assicurati al 100% che il tuo DB sia ancora ospitato su localhost. Ad esempio, se un amministratore di rete ha scelto (o cambiato in) hosting DB Amazon, sarà invece necessario quel nome host!
Nel mio caso, stavo importando un nuovo database e dopo non sono stato più in grado di riconnettermi. Alla fine ho capito che era un problema di spazio.
Quindi puoi eliminare l'ultimo database ed espandere il tuo disco rigido o quello che ho fatto, ripristinato un'istantanea della mia macchina virtuale.
Nel caso in cui qualcuno pensi che sia utile
Questo è un problema se si sta esaurendo lo spazio su disco. La soluzione è liberare spazio dall'HDD.
Per favore leggi di più per avere la spiegazione:
Se stai eseguendo MySQL su LINUX controlla lo spazio libero su HDD con il comando disk disk gratuito:
df
se stai ricevendo qualcosa del genere:
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 5162828 4902260 0 100% /
udev 156676 84 156592 1% /dev
/dev/sda3 3107124 70844 2878444 3% /home
Quindi questo è il problema e ora hai la soluzione!
Poiché mysql.sock vuole essere creato nella cartella mysql, che è quasi sempre nella cartella principale, non è riuscito a raggiungerlo a causa della mancanza di spazio.
Se periodicamente dai il comando ls nella directory mysql (in openSUSE 11.1 è in / var / lib / mysql) otterrai qualcosa del tipo:
hostname:/var/lib/mysql #
.protected IT files ibdata1 mysqld.log systemtemp
.tmp NEWS greekDB mysql mysqld.pid test
ARXEIO TEMP1 ib_logfile0 mysql.sock polis
DATING deisi ib_logfile1 mysql_upgrade_info restore
Il file mysql.sock appare e scompare spesso (è necessario provare a assegnare a ls per colpire un'istanza con il file mysql.sock nella cartella).
Ciò è causato da spazio su disco insufficiente.
Spero di aiutare alcune persone !!!! Grazie!
Prova le prime 2, 3 soluzioni. L'errore è stil popup e se non riesci a trovare/var/lib/mysql/mysql.sock
find /var/ -name mysql.sock
Controlla lo spazio disponibile in / var /
df
Se la directory è piena, rimuovere alcuni file / directory inutili
rm /var/cache/*
Probabilmente il tuo problema verrà risolto ora.
Se sei nella shell di sf.net , prova:
mysql --host=mysql-{LETTER} --user={LETTER}{GROUP ID}admin -p
Cambia {LETTER} e {GROUP ID} come mostrato nel tuo database MySQL del profilo di amministratore del progetto.