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?


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”


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.


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

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


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= ...


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.


Ś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.


1
$ mysqladmin variables | grep sock

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


0

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

/usr/libexec/locate.updatedb

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

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


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


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.


-4

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

updatedb
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.