Nie można połączyć się z lokalnym serwerem MySQL przez gniazdo '/tmp/mysql.sock' (2)

143

Zainstalowałem serwer MySQL i próbuję się z nim połączyć, ale pojawia się błąd:

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

Sprawdziłem mój katalog / tmp i nie ma mysql.sock. Nigdzie nie mogę znaleźć mysql.sock. Czytałem, że może być w

    /var/lib/mysql/mysql.sock

Ale też tam sprawdziłem i nie ma nawet katalogu mysql, tylko coś z postfiksem w / lib. Czy ktoś mógłby mi pomóc z tym problemem?

user3344382
źródło
2
Pracuję na Mac OS X
user3344382
Witaj, czy możesz wkleić polecenie, którego używasz do połączenia? Czy również uruchomiłeś MySQL?
Mark Butler,
@MarkButler Używam tego polecenia: / usr / local / mysql / bin / mysql
user3344382
prawda, po prostu serwer nie był uruchomiony. Jednak nadal nie mogę zrozumieć, gdzie jest mysql.sock, czy mogą być jakieś inne ukryte miejsca, w których może się on znajdować?
user3344382
Ten błąd jest bardzo ogólny i może mieć wiele przyczyn.
Zgrabne

Odpowiedzi:

272

Spróbuj uruchomić serwer MySQL:

mysql.server start

Casey Robinson
źródło
44
BŁĄD! Serwer zakończył pracę bez aktualizacji pliku PID
bastianwegge
1
@wegginho Możliwe rozwiązanie twojego komunikatu o błędzie, jeśli zainstalowałeś MySQL przez homebrew Błąd PID na serwerze mysql start
Casey Robinson
zapomniałem uruchomić usługi mysql!
GeekHades
1
@bastianwegge spróbuj sprawdzić plik błędu w /usr/local/var/mysql/USERNAME.local.err w moim przypadku musiałem usunąć /tmp/mysql.sock, a następnie ponownie uruchomićmysql.server start
Josh Bradley
61

Otrzymałem to samo pytanie po aktualizacji OS X Yosemite, cóż, rozwiązanie jest dość proste, sprawdź preferencje systemowe -> mysql, stan to STOP. Po prostu uruchom go ponownie i teraz działa dobrze na moim Macu.

keren
źródło
1
Dzięki tonie @keren tak proste, zmarnowałem dobre 45 minut na zmianę ustawień w moim pliku my.cnf, kiedy przez cały czas był to jedyny problem.
kandroidj
Pracowałem też dla mnie dzięki, nie miałem pomysłu na instalację DMG.
Rameshwar Vyevhare
To niestety mi nie pomogło
simhumileco
Proste i niesamowite!
Desmond DAI
6
Co? Dlaczego Preferencje systemowe OSX miałyby opcję MySQL?
AlxVallejo
45

Dla MAMP

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

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

AKTUALIZACJA: Za każdym razem, gdy mój komputer uruchamia się ponownie, muszę wprowadzić to polecenie, więc utworzyłem skrót.

Wykonaj następujące czynności w typie terminala:

~: vi ~/.profile

Dodaj

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

Zapisać.

W typie terminala:

~: ... do źródła konfiguracji .profile.

Teraz w terminalu możesz po prostu wpisać

~: sockit
Bryan
źródło
1
Niesamowite. Po prostu poprawka, której szukałem.
JoshHighland
1
Wróciłem do tego postu wiele razy i zawsze działa.
Trey Copeland
Zaktualizowano do mysql 5.7.1 poza MAMP i wystąpił błąd. To naprawiło to dla mnie
David
Jeśli korzystasz z książki Mac i widzisz
MAMP,
32

Następujące polecenie rozwiązało mój problem:

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

sudo mysql.server start
Nikesh Suwal
źródło
1
Po 3 godzinach poszukiwań rozwiązało to mój problem. Właśnie zainstalowałem mysql przez homebrew, brew install mysqlale żadne z poleceń, które homebrew powiedział mi, aby uruchomić, nie działało poprawnie. To sprawiło, że każdy problem zniknął ... Dziękuję !! Czym dokładnie jest ta pierwsza linia, którą napisałeś? Co to znaczy?
mesqueeb
Dzięki, działa dobrze!
Nirojan Selvanathan
1
Hej dla mnie to było: sudo chown -R _mysql: mysql / usr / local / mysql / data
Junaid Bhura
chown -R zmień właściciela -R rekurencyjnie
Hos Mercury
Nieskazitelny 10.13.1 i homebrew podał ten błąd podczas instalowania mariadb (10.2.10). Ta zmiana właściciela naprawiła to, więc teraz sudo brew services start mariadbdziała również, aby rozpocząć mariadb podczas rozruchu (nie tylko podczas logowania). YAY! Dziękuję Ci!
iggie
16

Po wypróbowaniu wszystkich rozwiązań zadziałało tylko u mnie po określeniu hosta

mysql -u root -p -h127.0.0.1

prosząc o hasło

Enter password:

naciśnij enter

i będzie działać, jeśli wszystko jest w porządku jak wyżej.

Hos Mercury
źródło
2
Konfiguruję mysql z kontenerem docker przy użyciu Docker for Mac i mapuję jego port 3306 na Maca. Bez dodawania -h 127.0.0.1, zawsze wyświetla monit Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2); po dodaniu argumentu działa dobrze.
Evi Song
1
Dzieje się tak, ponieważ myślę, że przejście przez 127.0.0.1 nie używa gniazda. Bardziej wąskie obejście.
Lucas Morgan
1
Uruchomienie mysql -u root -h127.0.0.1 bez -pflagi zadziałało dla mnie, ponieważ kiedy zainstalowałem MySQL, nigdy nie uruchomiłem mysql_secure_installationpolecenia. Rozumiem, że w tym przypadku instalacja domyślnie nie wymaga hasła.
Richie Thomas
1
Działał jak urok!
Panduka DeSilva
10

Po wielogodzinnych zmaganiach jedyne, co zadziałało, to

sudo mysql.server start

Następnie wykonaj bezpieczną instalację za pomocą

mysql_secure_installation 

Następnie połącz się z bazą danych przez

mysql -uroot -p

MySQL jest instalowany przez homebrew, a wersja to

Server version: 5.7.21 Homebrew

Określenie wersji może być pomocne, ponieważ rozwiązanie może się różnić w zależności od wersji.

Krishnadas PC
źródło
9

W pliku konfiguracyjnym mysql, który jest obecny w programie, /etc/my.cnfwprowadź poniższe zmiany, a następnie zrestartuj mysqldproces Dameon

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

Sprawdź również ten powiązany wątek

Nie można połączyć się z lokalnym serwerem MySQL przez gniazdo '/tmp/mysql.sock

Rahul
źródło
nie ma pliku my.cnf w katalogu / etc. Myślę, że mogę utworzyć ten plik ręcznie, ale jak powiedziałem, w / var / lib nie ma katalogu mysql, jak może tam być gniazdo?
user3344382
Sprawdź powiązany wątek, który opublikowałem, a także sprawdź, czy Twój serwer mysql faktycznie działa, czy nie.
Rahul
Znalazłem plik w/etc/mysql/my.cnf
Devon
jeśli zainstalowałeś z naparem, musisz użyć go /tmp/mysql.sockjako lokalizacji skarpety
Mark Shust w M.academy
8

Następujące rozwiązały mój problem:

Sprawdź, gdzie Twój serwer MySQL nasłuchuje: netstat -nlp Jeśli nasłuchuje na TCP, użyj 127.0.0.1 podczas łączenia się z DB zamiast "localhost"

Sprawdź dokument MySQL tutaj

Umesz
źródło
to wydaje się działać dla mnie i dowodzi, że mysql żyje, ale dlaczego nie mogę połączyć się z lokalnym gniazdem?
Colin D
8

Spróbuj to zadziałało dla mnie.

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

vasanth vasu
źródło
Dlaczego ta ścieżka? podczas korzystania z polecenia „gdzie jest mysql” (MAC OS), które podaje dane wyjściowe /usr/local/mysql/bin/. Jak zidentyfikować tę ścieżkę na komputerze Mac?
Vineeth Bhaskaran
Tak, ścieżka odpowiednio się zmienia
vasanth vasu
4

Jeśli używasz XAMPP w Mac OS X i zainstalowałeś MySQL z Homebrew, możesz mieć ten problem. W oknie menedżera XAMPP przejdź do Zarządzaj serwerami i wybierz MySQL, następnie kliknij konfiguruj i otwórz plik konfiguracyjny, tam masz ścieżkę do pliku gniazda, umieść ścieżkę w konfiguracji hosta MySQL i powinno działać.

To jest coś takiego:

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

wtedy na przykład w Django:

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

Mam nadzieję że to pomoże.

Kair
źródło
3

Po pierwsze, kluczem była dla mnie wiedza, gdzie jest katalog danych. /usr/local/var/mysql Tutaj był co najmniej jeden plik z rozszerzeniem .err poprzedzony nazwą mojego komputera lokalnego. Miał wszystkie informacje potrzebne do zdiagnozowania.

Myślę, że spieprzyłem, instalując najpierw mysql 8. Moja aplikacja nie jest z nią kompatybilna, więc musiałem wrócić do wersji 5.7

Moje rozwiązanie, które działało dla mnie, przechodziło do /usr/local/etc/my.cnf

Znajdź tę linię, jeśli tam jest. Myślę, że jest to związane z mysql 8:

mysqlx-bind-address = 127.0.0.1 

Usuń go, ponieważ mysql 5.7 mówi, że nie podoba mu się to w dzienniku błędów

Dodaj tam również tę linię, jeśli jej nie ma pod adresem wiązania.

socket=/tmp/mysql.sock

Przejdź do /tmpkatalogu i usuń znajdujące się w nim pliki mysql.sock. Po uruchomieniu serwera odtworzy pliki sock

Usuń katalog danych z mySQL w stanie zatrzymania. Mój był /usr/local/var/mysql. To jest to samo miejsce, w którym znajdują się dzienniki

Stamtąd uciekłem

>mysqld --initialize

Wtedy wszystko zaczęło działać ... ta komenda da Ci na koniec losowe hasło. Zapisz to hasło do następnego kroku

Uruchomię to, aby przypisać własne hasło.

>mysql_secure_installation 

Obie

>brew services stop mysql@5.7

i

>mysql.server start

teraz pracują. Mam nadzieję że to pomoże. To około 3 godziny prób i błędów.

Adrian
źródło
3

Najpierw wpisz to-:

brew services start mysql

Wtedy to -:

mysql -uroot
Rudra shah
źródło
0

Spędziłem dużo czasu robiąc to Chcę umieścić moją aplikację django na moim serwerze i po uruchomieniu python manage.py migratenapotkałem te pytania

I!! Ustawiłem to. ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock Wreszcie zadziałało!

LittleCabbage
źródło
0

Wpisz terminal w następujący sposób:

mysql.server start
Frank Cheng
źródło
0

Zatrzymanie i uruchomienie serwera mysql z terminala rozwiązało mój problem. Poniżej znajdują się polecenia cmds do zatrzymania i uruchomienia serwera mysql w MacOs.

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

Uwaga: ponowne uruchomienie usług z preferencji systemu Mac nie rozwiązało problemu w moim komputerze Mac. Więc spróbuj ponownie uruchomić z terminala.

Lakshmi Narayanan
źródło
0

Jeśli korzystasz z systemu macOS, po prostu łatwiej jest najpierw sprawdzić, czy przejdź do „Preferencji systemowych” i sprawdź, czy MySQL działa, czy nie.

Micah Lotemo
źródło
-1

W przypadku CentOS plik do zainicjowania mysql znajduje się tutaj:

/etc/init.d/mysqld start
etusm
źródło