Niedawno próbowałem zainstalować MySQL za pomocą homebrew ( brew install mysql
) i kiedy próbuję go uruchomić, pojawia się następujący błąd:
BŁĄD 2002 (HY000): Nie można połączyć się z lokalnym serwerem MySQL przez gniazdo '/tmp/mysql.sock' (2)
Nie ma /tmp/mysql.sock
ani /var/lib/mysql.sock
.
Szukałem i nie znalazłem żadnego mysql.sock
pliku.
Jak mogę to naprawić?
mysqld
aby sprawdzić rzeczy i upewnić się, że ostatnio MySQL poprawnie się wyłączył. Jeśli miał „brudne” zamknięcie (np. Jeśli bateria laptopa wymusza zamknięcie systemu), powinno to wyczyścić go. Następnie można uruchomić ponownie serwer MySQL:mysql.server start
.Odpowiedzi:
Kiedy masz uruchomiony serwer przez
powinieneś zobaczyć gniazdo w /tmp/mysql.sock . Jednak wydaje się, że system oczekuje tego w /var/mysql/mysql.sock . Aby to naprawić, musisz utworzyć dowiązanie symboliczne w / var / mysql :
To rozwiązało to dla mnie. Teraz mój phpMyAdmin działa szczęśliwie z localhost i 127.0.0.1 .
Kredyt należy do Henry'ego
źródło
mysql.server start
, dostajęERROR! The server quit without updating PID file (/usr/local/var/mysql/lyahdav-C02R32HCG8WM.pid)
. Potrzebowałem starszej wersji MySQL, zainstalowanej przezbrew install [email protected]
.mysql.server start
naprawiłem to dla mnieWygląda na to, że Twój serwer mysql nie został uruchomiony. Zwykle uruchamiam polecenie zatrzymania, a następnie uruchamiam je ponownie:
Ten sam błąd i to działa dla mnie.
źródło
mysqld &
zgodnie z komentarzem powyżej, ale myślę, że prawdopodobnie zrobiłoby to to samo, ponieważmysqld stop
jestem prawie pewien, że w moim przypadku było to z powodu niewłaściwego zamknięcia.Zostało mi kilka katalogów z innej instalacji mysql (8.0), które nie zostały usunięte.
Rozwiązałem to, wykonując następujące czynności:
Najpierw odinstaluj mysql
Usuń foldery / pliki, które nie zostały usunięte
Zainstaluj ponownie mysql i połącz go
Włącz i uruchom usługę
źródło
Spróbuj połączyć się przy użyciu „127.0.0.1” zamiast „localhost”.
źródło
1) Jeśli widzisz "mysql zatrzymany" po uruchomieniu poniższego polecenia;
2) i jeśli możesz uruchomić mysql za pomocą poniższego polecenia;
to znaczy; mysql może uruchomić się ręcznie, ale nie uruchamia się automatycznie po uruchomieniu systemu operacyjnego. Dodanie mysql do usług rozwiąże ten problem. Aby to zrobić, możesz uruchomić poniższe polecenie;
Następnie możesz ponownie uruchomić system operacyjny i spróbować połączyć się z mysql, aby sprawdzić, czy uruchomił się automatycznie. Zrobiłem to samo i przestałem otrzymywać poniższy błąd;
Mam nadzieję, że to pomoże.
źródło
Plik
/tmp/mysql.sock
jest prawdopodobnie potokiem nazwanym, ponieważ znajduje się w folderze tymczasowym. Nazwany potok to plik specjalny, który nigdy nie jest przechowywany na stałe.Jeśli stworzymy dwa programy i chcemy, aby jeden program wysyłał komunikat do innego programu, możemy utworzyć plik tekstowy. Mamy jeden program, który zapisuje coś w pliku tekstowym, a drugi program czyta to, co napisał nasz drugi program. Tym jest potok, z wyjątkiem tego, że nie zapisuje pliku na dysku twardym naszego komputera, IE nie przechowuje go na stałe (tak jak robimy, gdy tworzymy plik i zapisujemy go).
Socket to dokładnie to samo, co Pipe. Różnica polega na tym, że gniazda są zwykle używane w sieci - między komputerami. Socket wysyła informacje do innego komputera lub odbiera informacje z innego komputera. Zarówno potoki, jak i gniazda używają pliku tymczasowego do udostępniania, aby mogły się „komunikować”.
Trudno jest określić, którego MySql używa w tym przypadku. Nie ma to jednak znaczenia.
Polecenie
mysql.server start
powinno spowodować, że 'serwer' (program) uruchomi swoją nieskończoną pętlę, która utworzy ten plik specjalny i zaczeka na zmiany (listen
na zapis).Potem częstym problemem może być to, że program MySql nie ma uprawnień do tworzenia pliku na twoim komputerze, więc może być konieczne nadanie mu uprawnień roota
źródło
mysql.server start
,mysql.server stop
a następnie ponownie uruchomiłem usługę przez homebrewbrew services start [email protected]
i wszystko poszło gładko.Po zainstalowaniu macos mojave, musiałem wyczyścić folder mysql,
/usr/local/var/mysql
a następnie zainstalować go ponownie za pomocąbrew install mysql
innych uprawnień, które pojawiałyby się wszędzie.źródło
/usr/local/var/mysql
spowoduje również usunięcie wszystkich istniejących baz danych!Mam ten sam błąd i to mi pomogło:
źródło
Aby dodać do tych odpowiedzi, w moim przypadku nie miałem lokalnego serwera mySQL, działał on w kontenerze docker. Zatem plik gniazda nie istnieje i nie będzie dostępny dla klienta „mysql”.
Plik sock jest tworzony przez mysqld i mysql używa go do komunikacji z nim. Jeśli jednak twój serwer mySql nie działa lokalnie, nie wymaga pliku sock.
Podając nazwę hosta / IP, plik sock nie jest wymagany np
źródło
Ponieważ spędziłem trochę czasu próbując rozwiązać ten problem i zawsze wracałem na tę stronę, szukając tego błędu, zostawię tutaj swoje rozwiązanie z nadzieją, że ktoś zaoszczędzi czas, który straciłem. Chociaż w moim przypadku używam raczej mariadb niż MySql, nadal możesz być w stanie dostosować to rozwiązanie do swoich potrzeb.
Mój problem
jest taki sam, ale moja konfiguracja jest nieco inna (mariadb zamiast mysql):
Zainstalowany mariadb z homebrew
Uruchomiono demona
Próbowałem się połączyć i otrzymałem powyższy błąd
Moje rozwiązanie
dowiedz się, które
my.cnf
pliki są używane przezmysql
(zgodnie z sugestią w tym komentarzu ):sprawdź, gdzie jest uruchomiony plik gniazda Unix (prawie tak, jak opisano tutaj ):
(możesz chcieć
grep mysql
zamiast mariadb)Dodaj znaleziony plik gniazda
~/.my.cnf
(w razie potrzeby utwórz plik) (zakładając, że~/.my.cnf
został wymieniony podczas uruchamiania poleceniamysql --verbose ...
-command z góry):Zrestartuj swój mariadb:
Po tym mogłem uruchomić mysql i otrzymałem:
Więc zamiast tego uruchamiam polecenie z uprawnieniami superużytkownika i po wprowadzeniu hasła otrzymałem:
Uwagi:
Nie jestem do końca pewien co do grup, w których musisz dodać gniazdo, najpierw miałem go [klient-serwer], ale potem doszedłem do wniosku, że [klient] powinien wystarczyć. Więc zmieniłem to i nadal działa.
Podczas uruchamiania
mariadb_config | grep socket
otrzymuję:--socket [/tmp/mysql.sock]
co jest nieco zagmatwane, ponieważ wydaje się, że/usr/local/mariadb/data/mariadb.sock
jest to rzeczywiste miejsce (przynajmniej na moim komputerze)Zastanawiam się, gdzie mogę tak skonfigurować,
/usr/local/mariadb/data/mariadb.sock
aby faktycznie był,/tmp/mysql.sock
więc mogę użyć ustawień domyślnych zamiast edytować moje.my.cnf
(ale jestem teraz zbyt zmęczony, aby to rozgryźć ...)W pewnym momencie zrobiłem też rzeczy wymienione w innych odpowiedziach, zanim to wymyśliłem.
źródło
Będziesz musiał uruchomić
mysql_install_db
- najłatwiej jest, jeśli jesteś w katalogu instalacyjnym:Alternatywnie, można karmić
mysql_install_db
siębasedir
parametr tak:źródło
Napotkałem ten sam problem na moim Macu i rozwiązałem go, postępując zgodnie z poniższymi samouczkami
https://mariadb.com/resources/blog/installing-mariadb-10116-mac-os-x-homebrew
Ale nie zapomnij zabić lub odinstalować starej wersji, zanim przejdziesz dalej.
Polecenia:
źródło
Po restarcie nie mogłem połączyć się z lokalnym mariadbem, wyszukiwanie również doprowadziło mnie do tej strony i chciałem podzielić się z Tobą moim rozwiązaniem.
Zauważyłem, że brakuje katalogu my.cnf.d w / usr / local / etc /.
Jest to znany błąd występujący w homebrew, który został tam opisany i rozwiązany. https://github.com/Homebrew/homebrew-core/issues/36801
szybki sposób na naprawienie: mkdir /usr/local/etc/my.cnf.d
źródło
brew update
i ponownie uruchomić.brew services list
wynik pokazywał status mariadbstarted
na żółto. Dzięki za wskazówkę.Podczas uruchamiania mysql_secure_installation i wpisywania nowego hasła otrzymałem:
Zauważyłem, próbując wykonać następujące czynności z tej odpowiedzi :
Nic nie zwróciło, a uznałem to za oznaczające, że nie ma pliku .sock.
Tak więc dodałem następujący tekst do mojego pliku my.cnf (w /etc/my.cnf lub w moim przypadku /usr/local/etc/my.cnf ).
Pod:
Pod:
To było oparte na tym poście .
Następnie ponownie zatrzymaj / uruchom mysql i ponów próbę mysql_secure_installation, co w końcu pozwoliło mi wprowadzić nowe hasło roota i kontynuować z innymi preferencjami konfiguracji.
Mam nadzieję, że to komuś pomoże. Człowieku, nienawidzę tych rzeczy ...
źródło
aby zakończyć ten wątek. dlatego MAMP (PRO) jest używany dość często
ścieżka tutaj jest
źródło
Ręcznie uruchomiłem mysql w panelu preferencji systemowych, inicjując bazę danych, a następnie ją uruchamiając. To rozwiązało mój problem.
źródło
W moim przypadku winowajca został znaleziony w plikach dziennika:
Więc zmieniłem nazwę,
ib_logfile0
aby pozbyć się błędu (musiałem zrobić to samoib_logfile1
później).źródło
Miałem ten sam problem. Po wypróbowaniu wszystkich tych metod bez powodzenia wykonałem następujące czynności:
w innej konsoli:
Widziałem następujący błąd:
Więc zmieniłem rozszerzenie
tc.log
natc.log.txt
i zrestartowałem mariadbi zrobione!
źródło
rm -rf / usr / local / var / mysql / ib_logfile *
źródło
To działa dla mnie:
Dzięki
źródło
Dla mnie zainstalowałem
mariadb
dawno temu, a potem zainstalowałem[email protected]
.Kiedy wykonałem
mysql -uroot
, pojawia się błąd:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
Czytanie odpowiedzi:
mariadb
/usr/local/var/mysql
mysqld --initialize
Wtedy mogłem
mysql -uroot -p
źródło