Imansible connettersi al server MySQL locale tramite socket ‘/var/mysql/mysql.sock’ (38)

Sto avendo un grosso problema nel tentativo di connettermi a mysql. Quando corro:

/usr/local/mysql/bin/mysql start 

Ho il seguente errore:

 Can't connect to local MySQL server through socket '/var/mysql/mysql.sock' (38) 

Ho mysql.sock sotto la directory /var/mysql .

In /etc/my.cnf ho:

 [client] port=3306 socket=/var/mysql/mysql.sock [mysqld] port=3306 socket=/var/mysql/mysql.sock key_buffer_size=16M max_allowed_packet=8M 

e in /etc/php.ini ho:

 ; Default socket name for local MySQL connects. If empty, uses the built-in ; MySQL defaults. mysql.default_socket = /var/mysql/mysql.sock 

Ho riavviato apache utilizzando il riavvio sudo /opt/local/apache2/bin/apachectl restart

Ma ho ancora l’errore.

Altrimenti, non so se questo è rilevante, ma quando faccio mysql_config --sockets ottengo

 --socket [/tmp/mysql.sock] 

Se il file my.cnf (di solito nella cartella / etc / mysql / ) è configurato correttamente con

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

puoi controllare se mysql è in esecuzione con il seguente comando:

 mysqladmin -u root -p status 

prova a cambiare la tua authorization per la cartella mysql. Se lavori localmente, puoi provare:

 sudo chmod -R 755 /var/lib/mysql/ 

questo l’ha risolto per me

sei sicuro di aver installato mysql e anche il server mysql ..

Ad esempio, per installare il server mySql userò yum o apt per installare sia lo strumento da riga di comando mysql che il server:

 yum -y install mysql mysql-server (or apt-get install mysql mysql-server) 

Abilita il servizio MySQL:

 /sbin/chkconfig mysqld on 

Avvia il server MySQL:

 /sbin/service mysqld start 

successivamente imposta la password di root di MySQL:

 mysqladmin -u root password 'new-password' (with the quotes) 

Spero possa essere d’aiuto.

Una soluzione rapida che ha funzionato per me: prova a utilizzare l’indirizzo ip locale (127.0.0.1) invece di “localhost” in mysql_connect (). Questo “forza” php per connettersi tramite TCP / IP invece di un socket unix.

Ho ricevuto il seguente errore

 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111) 

Ho provato diversi modi e alla fine l’ho risolto nel modo seguente

 sudo gksu gedit /etc/mysql/my.cnf 

modificata

 #bind-address = 127.0.0.1 

a

 bind-address = localhost 

e riavviato

 sudo /etc/init.d/mysql restart 

ha funzionato

Assicurati di eseguire mysqld: /etc/init.d/mysql start

Per evitare che si verifichi il problema, è necessario eseguire un arresto regolare del server dalla riga di comando anziché spegnere il server.

 shutdown -h now 

Ciò interromperà i servizi in esecuzione prima di spegnere la macchina.

Basato su Centos, un metodo aggiuntivo per farlo tornare di nuovo quando si incontra questo problema è spostare mysql.sock:

 mv /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock.bak service mysqld start 

Il riavvio del servizio crea una nuova voce denominata mqsql.sock

Un’altra soluzione è modificare /etc/my.cnf e includere l’host nella sezione [client]

  [client] #password = your_password host = 127.0.0.1 port = 3306 socket = /var/run/mysql/mysql.sock 

E poi riavviare il servizio mysql.

Questa soluzione alternativa è stata testata in: Versione server: 5.5.25a-log Distribuzione dell’origine

Come si può vedere dalle molte risposte qui, ci sono molti problemi che possono causare questo messaggio di errore quando si avvia il servizio MySQL. Il fatto è che MySQL generalmente ti dirà esattamente cosa c’è che non va, se cerchi solo il file di log appropriato.

Ad esempio, su Ubuntu, dovresti controllare /var/log/syslog . Poiché molte altre cose potrebbero anche accedere a questo file, probabilmente vorrai usare grep per guardare i messaggi mysql, e tail per guardare solo i più recenti. Tutti insieme, potrebbe assomigliare a:

grep mysql /var/log/syslog | tail -50

Non apportare ciecamente modifiche alla configurazione perché qualcun altro ha dichiarato “Funzionava per il mio sistema”. Scopri cosa c’è di sbagliato nel tuo sistema e otterrai risultati migliori molto più velocemente.

Nel mio caso, stavo usando Centos 5.5. Ho scoperto che il problema era dovuto al fatto che il servizio mysql era stato bloccato in qualche modo. Così ho avviato il servizio mysql con il comando:

  /etc/init.d/mysqld start 

Quindi .. errore stupido.

Ho avuto lo stesso problema ed è stato causato da un aggiornamento dei driver mysql quando il server mysql era in esecuzione. Ho risolto il problema riavviando sia mysql che apache2:

sudo service mysql stop

inizio su mysql del servizio sudo

sudo service apache2 stop

inizio servizio sudo apache2

Se tutto ha funzionato bene e hai appena iniziato a vedere questo errore, prima di fare qualsiasi altra cosa, assicurati di non aver esaurito lo spazio su disco:

 df -h 

Se il volume in cui viene creato mysql.sock è al 100%, MySql non sarà in grado di crearlo e questa sarà la causa di questo errore. Tutto ciò che devi fare è eliminare qualcosa che non è necessario, come i vecchi file di registro.

 sudo service mysql start 

Questo dovrebbe servire a te. Potrebbe esserci la possibilità che tu abbia cambiato alcuni comandi che hanno influenzato le configurazioni di mysql.

Stavo ricevendo l’errore perché eseguivo MAMP e il mio file .sock si trovava in una posizione diversa. Ho appena aggiunto un link simbolico in cui l’app pensava che dovesse essere quello che indicava dove effettivamente si trovava e funzionava come un incantesimo.

prova con -h (host) e -P (porta):

mysql -h 127.0.0.1 -P 3306 -u root -p

Ho ricevuto questo errore quando ho impostato cron job per il mio file. Ho cambiato le autorizzazioni del file in 777 ma non ha funzionato ancora per me. Finalmente ho trovato la soluzione. Potrebbe essere utile per gli altri.

Prova con questo comando:

mysql -h 127.0.0.1 -P 3306 -u root -p

Ricorda che -h significa host e -p significa porta .

Se si utilizza la versione micro di AWS (Amazon Web Services), si tratta di un problema di memoria. Quando ho corso

 mysql 

dal terminale direbbe

 ERROR 2002 (HY000): Can't connect to local MySQL server through socket /var/run/mysqld/mysqld.sock' (111) 

Così ho provato quanto segue e sarebbe solo fallire.

 service mysqld restart 

Dopo molte ricerche, ho scoperto che devi creare un file di scambio per MySQL per avere memoria sufficiente. Le istruzioni sono elencate: http://www.prowebdev.us/2012/05/amazon-ec2-linux-micro-swap-space.html .

Quindi, sono stato in grado di riavviare mysqld.

puoi sempre avviare il server mysql specificando la posizione del file mysql.sock usando l’opzione –socket come

 mysql --socket=/var/mysql/mysql.sock 

Funzionerà anche se il percorso del file socket è specificato in una posizione diversa nel file my.cnf.

Per quelli la cui soluzione non ha funzionato, prova:

 cd /etc/mysql 

controlla se my.cnf è presente

 nano my.cnf 

e assicurati di avere un solo indirizzo di bind come segue:

bind-address = 127.0.0.1

In caso contrario, potrebbe essere il problema, basta uscire da nano e salvare il file.

e service mysql start

si noti che se non si dispone di nano (è un editor di testo) è sufficiente installarlo con apt-get install nano e una volta semplicemente premere Ctrl + X per uscire, non dimenticare di dire Y per salvare e utilizzare lo stesso file)

Ho anche scoperto che si trattava di un problema di autorizzazioni. Ho confrontato i file MySQL con un’installazione funzionante (entrambi su Debian 6 squeeze) e ho dovuto apportare le seguenti modifiche alla proprietà (dove mydatabase è un qualsiasi database).

Proprietà mysql:mysql :

 chown mysql:mysql /var/lib/mysql chown mysql:mysql /var/lib/mysql/ib* chown mysql:mysql /var/lib/mysql/mydatabase chown mysql:mysql /var/lib/mysql/mydatabase/* chown mysql:mysql /var/lib/mysql/mysql/* 

Proprietà mysql:root :

 chown mysql:root /var/lib/mysql/mysql chown mysql:root /var/run/mysqld 

Proprietà mysql:adm :

 chown mysql:adm /var/log/mysql chown mysql:adm /var/log/mysql.err chown mysql:adm /var/log/mysql.log* 

Questo non risponde direttamente alla tua domanda ma a un suo sottoinsieme, ovvero usando PythonAnywhere. Continuavo a inciampare su questa domanda quando cercavo una correzione, quindi la aggiungo qui nella speranza che possa aiutare gli altri nella mia situazione.


PythonAnywhere ha deciso di cambiare la connessione al database dei nomi degli host per migliorare l’efficienza e l’affidabilità, come descritto qui di seguito :

Il nome host ufficiale da utilizzare per la connessione all’istanza del database MySQL del tuo account è cambiato da mysql.server a nomeutente .mysql.pythonanywhere-services.com . Questo elude una parte della nostra infrastruttura che ha iniziato a mostrare problemi nelle ultime settimane e dovrebbe essere molto più efficiente e affidabile rispetto alla vecchia maniera.

Quindi, dovrai aggiornare il tuo hostname al valore evidenziato sopra.

Ci sono molte soluzioni a questo problema, ma per la mia situazione, ho solo bisogno di correggere la DATA sulla macchina / server ( Ubuntu 16.04 Server ).

i) Controlla la data del tuo server e correggila.

ii) Esegui sudo /etc/init.d/mysql restart

Questo dovrebbe iniziare.

Aggiunta

 --protocol=tcp 

alla lista dei pramatisti nella tua connessione ha funzionato per me.

Questo è stato abbastanza buono per me

 sudo /etc/init.d/mysql restart 

Mi sono imbattuto in questo problema oggi. Nessuna di queste risposte ha fornito la soluzione. Avevo bisogno di fare i seguenti comandi (trovati qui https://stackoverflow.com/a/20141146/633107 ) per avviare il mio servizio mysql:

 sudo /etc/init.d/mysql stop cd /var/lib/mysql/ ls ib_logfile* mv ib_logfile0 ib_logfile0.bak mv ib_logfile1 ib_logfile1.bak ... etc ... /etc/init.d/mysql restart 

Ciò è stato in parte indicato dai seguenti errori in /var/log/mysql/error.log:

 140319 11:58:21 InnoDB: Completed initialization of buffer pool InnoDB: Error: log file ./ib_logfile0 is of different size 0 50331648 bytes InnoDB: than specified in the .cnf file 0 5242880 bytes! 140319 11:58:21 [ERROR] Plugin 'InnoDB' init function returned error. 140319 11:58:21 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed. 140319 11:58:21 [ERROR] Unknown/unsupported storage engine: InnoDB 140319 11:58:21 [ERROR] Aborting 

Ho anche visto l’errore del disco pieno, ma solo quando si eseguono comandi senza sudo. Se il controllo delle autorizzazioni fallisce, riporta il disco pieno (anche quando la tua partizione non è nemmeno vicina al pieno).

CentOS 7, 64 bit. Nuova installazione
Nel mio caso, l’errore era perché non avevo il giusto server MySQL e il client MySQL installato.
Usando yum , ho rimosso mariadb e mysql-community edition. Ho scaricato i giri per il client e il server dal sito web ufficiale di MySQL e ho installato il server e il client.

Durante l’installazione del server, mi è stato mostrato un messaggio che la password dell’account di root per MySQL era memorizzata in un file che potevo visualizzare con sudo cat /root/.mysql_secret .

Quindi, dopo aver installato il client e il server, ho verificato se MySQL funzionava (penso di aver riavviato prima di farlo) con il comando sudo service mysql status e ho ottenuto il risultato.

MySQL in esecuzione (2601) [OK]

Ho effettuato l’accesso a MySQL utilizzando la password dal file .mysql_secret:
mysql -uroot -pdxM01Xfg3DXEPabpf . Si noti che dxM01Xfg3DXEPabpf è la password menzionata nel file .mysql_secret.

e poi digitato il seguente comando al prompt mysql per cambiare la password di root:

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('somePassword');

Da quel momento in poi tutto ha funzionato bene.

 sudo service mysqld start 

Ho lavorato per me, sto usando Centos

Ho usato 127.0.0.1 per -h invece localhost e tutto era OK. In altri casi ha avuto quello che aveva – errore di cui sopra.

Ho avuto questo problema anche quando provavo ad avviare il server, quindi molte delle risposte qui che dicono solo di avviare il server non hanno funzionato. La prima cosa che puoi fare è eseguire quanto segue per vedere se ci sono errori di configurazione:

 /usr/sbin/mysqld --verbose --help 1>/dev/null 

Ho avuto un errore che si è presentato:

 160816 19:24:33 [Note] /usr/sbin/mysqld (mysqld 5.5.50-0ubuntu0.14.04.1-log) starting as process 9461 ... 160816 19:24:33 [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead. 160816 19:24:33 [Note] Plugin 'FEDERATED' is disabled. 160816 19:24:33 [ERROR] /usr/sbin/mysqld: unknown variable 'innodb-online-alter-log-max-size=4294967296' 160816 19:24:33 [ERROR] Aborting 

Un semplice grep -HR "innodb-online-alter-log-max-size" /etc/mysql/ mi ha mostrato esattamente quale file conteneva la riga incriminata, quindi ho rimosso quella linea dal file.

Quindi, controllando il mio file /var/log/mysql/error.log ho avuto:

 InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes InnoDB: than specified in the .cnf file 0 671088640 bytes! 160816 22:46:46 [ERROR] Plugin 'InnoDB' init function returned error. 160816 22:46:46 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed. 160816 22:46:46 [ERROR] Unknown/unsupported storage engine: InnoDB 160816 22:46:46 [ERROR] Aborting 

In base a questa domanda la soluzione accettata non funzionava perché non riuscivo nemmeno a far avviare il server, quindi ho seguito quello che alcuni dei commenti hanno detto e cancellato il mio /var/lib/mysql/ib_logfile0 e /var/lib/mysql/ib_logfile1 file.

Ciò ha permesso al server di avviarsi e sono stato in grado di connettersi ed eseguire query, tuttavia, controllando il mio file di log degli errori, si stava rapidamente riempiendo di diverse decine di migliaia di righe come questa:

 160816 22:52:15 InnoDB: Error: page 1415 log sequence number 82039318708 InnoDB: is in the future! Current system log sequence number 81640793100. InnoDB: Your database may be corrupt or you may have copied the InnoDB InnoDB: tablespace but not the InnoDB log files. See InnoDB: http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html InnoDB: for more information. 

Sulla base di un suggerimento da qui , per risolvere questo problema ho eseguito un mysqldump e il ripristino di tutti i database (vedere il collegamento per diverse altre soluzioni).

 $ mysqldump -u root -p --allow-keywords --add-drop-database --comments --hex-blob --opt --quote-names --databases db_1 db_2 db_3 db_etc > backup-all-databases.sql $ mysql -u root -p < backup-all-databases.sql 

Tutto sembra funzionare come previsto ora.

Per me – questo era semplicemente un caso in cui MySQL impiegava molto tempo per essere caricato. Ho oltre 100.000 tabelle in uno dei miei database e alla fine ha avuto inizio, ma ovviamente deve impiegare molto tempo in questa istanza.

Ho avuto questo errore di socket e fondamentalmente è venuto fuori il fatto che MySQL non era in esecuzione. Se si esegue una nuova installazione, assicurarsi di installare 1) il pacchetto di sistema e 2) il programma di installazione del pannello (mysql.prefPane). Il programma di installazione del pannello ti consentirà di accedere alle tue Preferenze di Sistema e di aprire MySQL, quindi di eseguire un’istanza.

Si noti che, in una nuova installazione, avevo bisogno di ripristinare il mio computer affinché le modifiche diventino effettive. Dopo un riavvio, ho avuto una nuova istanza in esecuzione ed è stato in grado di aprire una connessione a localhost senza problemi.

Inoltre, apparentemente avevo installato versioni precedenti di MySQL ma avevo rimosso il pannello, il che rende facile ottenere un’istanza di MySQL in esecuzione per gli utenti Mac.

Un buon collegamento per questo processo di reinstallazione: http://www.coolestguyplanettech.com/how-to-install-php-mysql-apache-on-os-x-10-6/