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?


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


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.


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

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

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.


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.


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


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


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


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.


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.



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!



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.


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.


-1

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

/etc/init.d/mysqld start
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.