Nie można znaleźć mysql.sock

82

Musiałem tylko przeinstalować mysql i mam problem z jego uruchomieniem. Nie może znaleźć gniazda (mysql.sock). Problem w tym, że ja też nie. W terminalu Mac OS X 10.4 wpisuję: locate mysql.socki wracam /private/tmp/mysql.sock. Ma sens, że plik gniazda istnieje w tej lokalizacji, ale w rzeczywistości tak nie jest.

  1. Jak mogę znaleźć plik gniazda?

  2. Jeśli locate zwraca fałszywą lokalizację, musi mieć jakąś pamięć i prawdopodobnie indeksy. Jak mogę odświeżyć ten indeks?

Tony
źródło
1
/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
Máxima Alekz

Odpowiedzi:

139

aby odpowiedzieć na pierwszą część twojego pytania:

biegać

% mysqladmin -p -u <user-name> variables

i sprawdź zmienną „gniazdo”

zachowuje się
źródło
1
Gdybym mógł, całkowicie zmieniłbym tę odpowiedź na właściwą. Gdybym tylko wiedział o tym wcześniej!
Steph Rose
50
Pobiegł mysqladmin variables. Co robić gdy error: 'Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)'? :)
Alexander Wallin
Otrzymuję ten sam błąd co @afEkenholm i nie mogłem znaleźć rozwiązania. Pobiegłem sudo find / -name mysql.sockz katalogu głównego i nie mogłem znaleźć mysql.sock w dowolnym miejscu w systemie. Zainstalowałem MySQL przy użyciu 64-bitowego pliku dmg dla Mac OS 10.7. Obecnie działa Mavericks.
b_dubb
@b_dubb Jestem taka sama w Twojej sytuacji, jak rozwiązałeś swoje problemy?
MeganZhou,
1
Aby szybko sprawdzić parametr gniazda bez wykonywania wszystkich innych czynności: zmienne mysqladmin | gniazdo grep
BAR
49

To rozwiązało mój problem

mysql_config --socket

AKTUALIZACJA

mysql_config może nam powiedzieć, gdzie powinien znajdować się plik mysql.sock, ale w moim przypadku plik nie istniał. Więc usunąłem my.cnf:

sudo rm -rf /etc/my.cnf

A następnie ponownie uruchomiłem mysql:

brew services restart mysql

Plik został utworzony i mysql działa teraz dobrze.

Eugene Ramirez
źródło
7
To polecenie mówi ci, gdzie jest mysql.sock, która odpowiada na pytanie
Eugene Ramirez
3
To polecenie nie informuje, gdzie znajduje się plik. Informuje, gdzie mysql go szuka: ustawienie konfiguracji dla --socket.
morksinaanab
Nie mam. ls: /etc/my.cnf: No such file or directoryMoże muszę najpierw go utworzyć?
Abhi
jeśli nie masz pliku, /etc/my.cnfspróbuj obejrzeć /usr/loca/etc/my.cnf- @Abhi
rwcorbett
20

Plik gniazda powinien zostać utworzony automatycznie podczas uruchamiania demona MySQL.

Jeśli nie zostanie znaleziony, najprawdopodobniej katalog, który ma go zawierać, nie istnieje lub inny problem z systemem plików uniemożliwia utworzenie gniazda.

Aby dowiedzieć się, gdzie powinien znajdować się plik, użyj:

% mysqld --verbose --help | grep ^socket
Alnitak
źródło
4
Lub mysql --verbose --help | grep ^ socket
Ondrej Rafaj,
1
@Ondrej z pewnością mówi ci, gdzie klient myśli, że patrzy? Celem uruchomienia mysqldjest to, że powinien on powiedzieć, gdzie serwer go faktycznie umieścił!
Alnitak
na mojej instalacji xampp nie mogłem znaleźć demona, więc próbowałem bez niego i zadziałało :) ... co się stało za kulisami, nie mam pojęcia ...
Ondrej Rafaj
20

To znalazło to dla mnie:

netstat -ln | grep mysql

Mac OS X

zero_cool
źródło
10

Moim problemem był również plik mysql.sock.

Podczas procesu instalacji drupal musiałem powiedzieć, której bazy danych chcę użyć, ale moja baza danych nie została znaleziona

mkdir /var/mysql
ln -s /tmp/mysql.sock /var/mysql/mysql.sock

system szuka mysql.sock, ale znajduje się w złym katalogu

wystarczy, że połączysz go;)

Sporo czasu zajęło mi wygooglowanie wszystkich ważnych informacji, ale zajęło mi nawet godziny, aby dowiedzieć się, jak się dostosować, ale teraz mogę przedstawić wynik: D

ps: jeśli chcesz być dokładnie, musisz połączyć swoje /tmp/mysql.sock-file(jeśli znajduje się tam również w twoim systemie) do katalogu podanego przez php.ini (lub php.default.ini), gdziepdo_mysql.default_socket= ...

Matthias D.
źródło
Po zmianie w php.ini pdo_mysql.default_socketmusisz zrestartować serwer WWW, aby zmiany zostały załadowanesudo apachectl restart
Szekelygobe
5

Otrzymałem dokładną ścieżkę za pomocą:

netstat -ln | grep -o -m 1 -E '\S*mysqld?\.sock'

Ponieważ zwraca to tylko ścieżkę i nie wymaga żadnych danych wejściowych, możesz go potencjalnie użyć w skrypcie powłoki.

Aby to zadziałało, na komputerze musi być aktualnie uruchomiony MySQL. Działa również dla MariaDB.

mattbell87
źródło
Świetna odpowiedź! To faktycznie znajduje lokalizację gniazda, w przeciwieństwie do innych odpowiedzi.
Tyler Christian
2

Wydaje się, że pierwotne pytania wynikają z nieporozumień dotyczących a) gdzie jest plik i b) gdzie jest poszukiwany (i dlaczego nie możemy go tam znaleźć, gdy wykonujemy locate lub grep). Myślę, że celem Alnitaka było to, że chcesz znaleźć miejsce, z którym był powiązany - ale grep nie pokaże ci linku, prawda? Plik tam nie istnieje, ponieważ jest to link, a to tylko wskaźnik. Nadal musisz wiedzieć, gdzie umieścić link.

mój plik sock jest na pewno w / tmp, a BŁĄD, który otrzymuję, szuka go w / var / lib / (nie tylko / var). Połączyłem teraz z / var i / var / lib i nadal otrzymuję błąd „Nie można połączyć się z lokalnym serwerem MySQL przez gniazdo 'var / lib / mysql.sock' (2)”.

Zwróć uwagę na (2) po błędzie .... Znalazłem w innym wątku, że oznacza to, że gniazdo rzeczywiście mogło zostać użyte, ale coś jest nie tak z samym gniazdem - więc zamknąć maszynę - całkowicie - tak, że gniazdo zamyka się. Następnie ponowne uruchomienie powinno to naprawić. Próbowałem tego, ale u mnie nie zadziałało (teraz pytam czy restartowałem za szybko? Naprawdę?) Może to będzie rozwiązanie dla kogoś innego.

Amy D.
źródło
1
$ mysqladmin variables | grep sock

Spróbuj tego zamiast tego, to zwróci żądany wynik, usuwając niepowiązane informacje.

soarinblue
źródło
0

Aby odświeżyć bazę danych lokalizacji, uruchomiłem

/usr/libexec/locate.updatedb
Timbinous
źródło
0

(Q1) Jak mogę znaleźć plik gniazda?

Domyślną lokalizacją dla pliku gniazda jest /tmp/mysql.sock, aby znaleźć plik gniazda dla twojego systemu, użyj tego.

mysqladmin variables | grep socket

Jeśli właśnie zainstalowałeś MySql, plik mysql.sock nie zostanie utworzony, dopóki serwer nie zostanie uruchomiony. Użyj tego polecenia, aby go uruchomić.

sudo launchctl load -F /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist

Jeśli pojawi się monit o hasło, możesz podać nazwę użytkownika root lub inną podobną nazwę użytkownika. Terminal poprosi o podanie hasła.

mysqladmin --user root --password variables | grep socket

(Q2) Jak mogę odświeżyć lokalizację indeksu

Odśwież lokalizację bazy danych za pomocą tej komendy.

sudo /usr/libexec/locate.updatedb
Padhraic
źródło
0

Otrzymuję ten sam błąd w systemie Mac OS X 10.11.6:

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

Po wielu męczarniach i przekopaniu się przez porady tutaj i powiązane pytania, z których żadna nie rozwiązała problemu, wróciłem i usunąłem zainstalowane foldery i po prostu to zrobiłem brew install mysql.

Nadal pojawia się ten sam błąd w przypadku większości poleceń, ale to działa:

/usr/local/bin/mysqld

i zwraca:

/ usr / local / bin / mysqld: gotowy do połączeń.

Wersja: „5.7.12” gniazdo: „/tmp/mysql.sock” port: 3306 Homebrew

szeitlin
źródło
0

W ogóle nie mogłem znaleźć gniazda mysql, więc ponownie zainstalowałem serwer mysql (wszystkie tabele i ustawienia phpmyadmin zostały zachowane). Oto polecenia:

1) Zainstaluj

sudo apt-get install mysql-server

2) Postępuj zgodnie z krokami konfiguracji terminala

sudo mysql_secure_installation

3) Sprawdź stan: (Powinien zwrócić „Aktywny: aktywny (działa)”)

status systemctl mysql.service

Nika Tsogiaidze
źródło
0

Niestety żadna z powyższych nie zadziałała w moim przypadku. Ale w końcu znalazłem rozwiązania.

Aby dowiedzieć się, gdzie jest plik mysql.sock, po prostu otwórz menedżera xampp, wybierz MySQL i kliknij Konfiguruj po prawej stronie. Na panelu konfiguracji kliknij Otwórz plik konf i po prostu wyszukaj mysql.sock, naciskając skrót CMD + F.

W moim przypadku właściciel mysql.sock został zmieniony i musiałem zmienić go z powrotem na administratora root za pomocą: chmod root: admin mysql.sock

Następnie uzyskano dostęp do bazy danych.

szatti1489
źródło
-4

Nie mogę pomóc w pytaniu nr 1, ale aby odświeżyć locatebazę danych plików, uruchom:

updatedb
Chad Birch
źródło