Impossibile connettersi al server MySQL locale tramite socket '/tmp/mysql.sock' (2)


143

Ho installato il server MySQL e sto provando a connettermi ad esso, ma ricevendo l'errore:

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

Ho controllato la mia directory / tmp e non c'è mysql.sock. Non riesco a trovare mysql.sock da nessuna parte. Ho letto che potrebbe essere dentro

    /var/lib/mysql/mysql.sock

Ma ho controllato anche lì e non c'è nemmeno alcuna directory mysql, solo alcune cose postfix all'interno di / lib. Qualcuno potrebbe aiutarmi con questo problema?


2
Sto lavorando su Mac OS X
user3344382

Ciao, puoi incollare il comando che stai usando per connetterti? Hai anche avviato MySQL?
Mark Butler,

@MarkButler Sto usando questo comando: / usr / local / mysql / bin / mysql
user3344382

giusto, è solo che il server non era in esecuzione. Tuttavia, non riesco ancora a capire dov'è mysql.sock, potrebbero esserci altri luoghi nascosti in cui potrebbe risiedere?
user3344382

Questo errore è molto generale e può essere per una serie di motivi. Per un riepilogo accurato vedere qui: medium.com/@7anac/…
Janac Meena

Risposte:


272

Prova ad avviare il server MySQL:

mysql.server start


44
ERRORE! Il server si è chiuso senza aggiornare il file PID
bastianwegge il

1
@wegginho Possibile soluzione al tuo messaggio di errore se hai installato MySQL tramite errore PID
Casey Robinson

ho dimenticato di avviare i servizi mysql!
GeekHades,

1
@bastianwegge prova a controllare il file di errore in /usr/local/var/mysql/USERNAME.local.err nel mio caso ho dovuto eliminare /tmp/mysql.sock quindi riavviare usandomysql.server start
Josh Bradley

61

Ho avuto la stessa domanda dopo aver aggiornato OS X Yosemite, beh la soluzione è abbastanza semplice, controlla le preferenze di sistema -> mysql, lo stato era STOP. Basta riavviarlo e ora funziona perfettamente sul mio mac.


1
Grazie mille @keren così semplice, ho perso ben 45 minuti a modificare le impostazioni nel mio file my.cnf quando tutto questo è stato l'unico problema.
kandroidj,

Ha funzionato anche per me grazie, non avevo idea in termini di installazione DMG.
Rameshwar Vyevhare il

Questo purtroppo non mi ha aiutato
simhumileco,

Semplice e fantastico!
Desmond DAI,

6
Ehm, cosa? Perché le Preferenze di Sistema di OSX dovrebbero avere un'opzione MySQL?
AlxVallejo,

45

Per MAMP

ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock

Da https://coderwall.com/p/w5kwzw/solved-can-t-connect-to-local-mysql-server-through-socket-tmp-mysql-sock

AGGIORNAMENTO: Ogni volta che il mio computer si riavvia, devo inserire questo comando, quindi ho creato un collegamento.

Effettuare quanto segue nel tipo di terminale:

~: vi ~/.profile

Inserisci

alias ...='source ~/.profile'
alias sockit='sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock'

Salva.

Nel tipo di terminale:

~: ... per generare la configurazione .profile.

Ora nel terminale puoi semplicemente digitare

~: sockit

1
Eccezionale. Solo la correzione che stavo cercando.
JoshHighland

1
Sono tornato a questo post più volte e funziona sempre.
Trey Copeland,

Aggiornato a mysql 5.7.1 al di fuori di MAMP e si è verificato un errore. Questo mi ha risolto
David,

Se sei su un mac book e vedi MAMP, questo funziona
kelrob-dev

32

Il seguente comando ha risolto il mio problema:

sudo chown -R _mysql:mysql /usr/local/var/mysql

sudo mysql.server start

1
Dopo aver cercato per 3 ore questo ha risolto il mio problema. Ho appena installato mysql tramite homebrew con brew install mysqlma nessuno dei comandi che homebrew mi ha detto di eseguire ha funzionato correttamente. Questo ha fatto sparire ogni problema ... Grazie !! Cos'è esattamente quella prima riga che hai scritto? Cosa significa?
mesqueeb,

Grazie, funziona benissimo!
Nirojan Selvanathan,

1
Ehi per me è stato: sudo chown -R _mysql: mysql / usr / local / mysql / data
Junaid Bhura,

chown -R cambia il proprietario -R in modo ricorsivo
Hos Mercury

Un 10.13.1 incontaminato e homebrew hanno dato questo errore durante l'installazione di mariadb (10.2.10). Questa modifica del proprietario l'ha riparata, quindi ora sudo brew services start mariadbfunziona anche per avviare mariadb all'avvio (non solo al login). SÌÌ! Grazie!
iggie,

16

Dopo aver provato tutte le soluzioni ha funzionato solo per me dopo aver specificato l'host

mysql -u root -p -h127.0.0.1

quando si richiede la password

Enter password:

premere Invio

e funzionerà, se tutto è ok come sopra.


2
Ho installato mysql con un contenitore docker usando Docker per Mac e ho mappato la sua porta 3306 su Mac. Senza aggiungere il -h 127.0.0.1, richiede sempre Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2); dopo aver aggiunto l'argomento, funziona bene.
Evi Song,

1
Questo perché penso che passare attraverso 127.0.0.1 non usi il socket. Più una soluzione alternativa.
Lucas Morgan,

1
Correre mysql -u root -h127.0.0.1 senza -pbandiera ha funzionato per me, da quando ho installato MySQL non ho mai eseguito il mysql_secure_installationcomando. La mia comprensione è che in questo caso l'installazione per impostazione predefinita non richiede password.
Richie Thomas,

1
Ha funzionato come un fascino!
Panduka DeSilva,

10

Dopo aver lottato per ore l'unica cosa che ha funzionato è stata

sudo mysql.server start

Quindi eseguire un'installazione sicura con

mysql_secure_installation 

Quindi connettersi al db tramite

mysql -uroot -p

Mysql è installato tramite homebrew e la versione è

Server version: 5.7.21 Homebrew

Specificare la versione potrebbe essere utile in quanto la soluzione potrebbe differire in base alla versione.


9

Nel tuo file di configurazione mysql, che è presente nel /etc/my.cnffare le seguenti modifiche e quindi riavviare il mysqldprocesso dameon

[client]
socket=/var/lib/mysql/mysql.sock

Inoltre controlla questo thread correlato

Impossibile connettersi al server MySQL locale tramite socket '/tmp/mysql.sock


non c'è alcun file my.cnf nella directory / etc. Penso di poter creare quel file manualmente, ma come ho detto non esiste una directory mysql in / var / lib, come può essere il socket?
user3344382

Controlla il thread correlato che ho pubblicato e controlla se il tuo server mysql è effettivamente in esecuzione o meno.
Rahul

Ho trovato il file in/etc/mysql/my.cnf
Devon

se hai installato con brew devi usare /tmp/mysql.sockcome posizione del calzino
Mark Shust a M.academy,

8

Di seguito ho risolto il mio problema:

Controlla dove si trova il tuo server MySQL: netstat -nlp Se sta ascoltando TCP, usa 127.0.0.1 mentre ti connetti al DB invece di "localhost"

Controlla qui il documento MySQL


questo sembra funzionare per me e dimostra che mysql è vivo, ma perché non riesco a collegarmi al socket locale?
Colin D,

8

Prova questo ha funzionato per me.

sudo /usr/local/mysql/support-files/mysql.server start


Perché questo percorso? durante l'utilizzo del comando "Where is mysql" (MAC OS) che fornisce output /usr/local/mysql/bin/. Come identificare questo percorso in Mac?
Vineeth Bhaskaran,

Ya, Il percorso cambia di conseguenza
vasanth vasu,

4

Se stai usando XAMPP in Mac OS X e hai installato MySQL con Homebrew, potresti avere questo problema. Nella finestra del gestore XAMPP vai su Gestisci server e seleziona MySQL, quindi fai clic su Configura e apri il file di configurazione, lì hai il percorso del file socket, inserisci il percorso nella configurazione dell'host MySQL e dovrebbe funzionare.

È qualcosa del genere:

...
[client]
#password   = your_password
port        = 3306
socket      = /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
...

quindi, ad esempio in Django:

...    
DATABASES = {
        "default": {
            "ENGINE": "django.db.backends.mysql",
            "NAME": "database_name",
            "USER": "user",
            "PASSWORD": "password",
            "HOST": "/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock",
            "PORT": "",
        }
    }
...

Spero che questo ti aiuti.


3

Innanzitutto, sapere dove era la directory dei dati per me era la chiave. /usr/local/var/mysql Qui c'era almeno un file con estensione .err preceduto dal mio nome di macchina locale. Aveva tutte le informazioni che mi servivano per diagnosticare.

Penso di aver rovinato installando prima mysql 8. La mia app non è compatibile, quindi ho dovuto eseguire il downgrade alla versione 5.7

La mia soluzione che funzionava per me sarebbe stata /usr/local/etc/my.cnf

Trova questa linea se è lì. Penso che il suo mysql 8 sia correlato:

mysqlx-bind-address = 127.0.0.1 

Rimuoverlo perché nel mysql 5.7 dice che non gli piace nel registro degli errori

Aggiungi anche questa riga lì se non è presente sotto l'indirizzo di bind.

socket=/tmp/mysql.sock

Vai alla /tmpdirectory ed elimina tutti i file mysql.sock presenti. All'avvio del server, verranno ricreati i file di calzino

Cestinare la directory dei dati con mySQL nello stato di arresto. Il mio era /usr/local/var/mysql. Questo è lo stesso posto in cui si trovano i registri

Da lì sono corso

>mysqld --initialize

Quindi tutto ha iniziato a funzionare ... questo comando ti darà una password casuale alla fine. Salva quella password per il passaggio successivo

Eseguendo questo per assegnare la mia password.

>mysql_secure_installation 

Tutti e due

>brew services stop mysql@5.7

e

>mysql.server start

ora stanno lavorando. Spero che questo ti aiuti. Sono circa 3 ore di tentativi ed errori.


3

Prima digita questo-:

brew services start mysql

Poi questo -:

mysql -uroot

0

Ho trascorso molto tempo facendo questo voglio mettere la mia app django sul mio server e quando corro python manage.py migrateho incontrato queste domande

E!! Ho impostato questo ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock Ha funzionato finalmente!



0

L'arresto e l'avvio del server mysql dal terminale hanno risolto il mio problema. Di seguito sono riportati i cmds per arrestare e avviare il server mysql in MacOs.

sudo /usr/local/mysql/support-files/mysql.server stop
sudo /usr/local/mysql/support-files/mysql.server start

Nota: il riavvio dei servizi dalle preferenze del sistema Mac non ha risolto il problema nel mio mac. Quindi prova a riavviare dal terminale.


0

Se stai eseguendo un macOS è più semplice controllare prima vai su "Preferenze di Sistema" e vedi se MySQL è in esecuzione o meno.


-1

Per CentOS, il file per avviare mysql si trova qui:

/etc/init.d/mysqld start
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.