Czy ktoś wie, dlaczego mój /var/run/mysqld/mysqld.sock
plik gniazda nie byłby na moim komputerze podczas instalacji (lub ponownej instalacji) MySQL 5.1?
W tej chwili, kiedy próbuję uruchomić serwer za pomocą mysqld, dostaję błędy typu „ Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) when trying to connect
ale”, ale utworzenie pustego pliku o tej nazwie (jak sugerowano na forach ubuntu) nie powiodło się.
Mysql i postgres działały dobrze, dopóki jakiś czas temu nie uaktualniłem do natty; Spędziłem godziny, przeglądając obie bazy danych, próbując dowiedzieć się, co się dzieje. Mogę zrezygnować z postgres, ale nie mogę pracować bez kopii roboczej mysql.
Najdziwniejsza część: używam Kubuntu i rozumiem, że KDE używa mysql do przechowywania uprawnień użytkowników itp. Nie mam żadnych dziwnych problemów z uprawnieniami; czy mogę to rozumieć tak, że (jakoś?) MySQL faktycznie działa?
Może te pliki gniazd żyją w innym miejscu w natty? Czy łatwiej byłoby po prostu ponownie zainstalować system operacyjny? W tym momencie jestem otwarty na wszelkie sugestie, które przestaną marnować mój czas.
źródło
/var/run/mysqld/mysqld.sock
zostanie utworzony. Jak powiedział @Paul, musisz usunąć każdy plik umieszczony w tej lokalizacji.Odpowiedzi:
Plik gniazda tak naprawdę nie zawiera danych, tylko je przenosi. Jest to specjalny, nietypowy typ pliku utworzony za pomocą specjalnych wywołań / poleceń systemowych. To nie jest zwykły plik.
To jest jak potok, którego serwer i klienci mogą używać do łączenia i wymiany żądań i danych. Ponadto jest używany tylko lokalnie. Jego znaczenie ma jedynie uzgodnione miejsce spotkania w systemie plików.
Utworzenie zwykłego, starego pliku i umieszczenie go w tej lokalizacji może faktycznie kolidować z tworzeniem go przez serwer ... i tym samym uniemożliwić lokalnym klientom łączenie się z serwerem.
Moje zalecenie to usunięcie dowolnego pliku umieszczonego w lokalizacji. Specjalny plik gniazda jest tworzony przez serwer.
źródło
Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) when trying to connect
Po określeniu
host=localhost
klient mysql spróbuje zalogować się do serwera mysql przy użyciu potoku nazwanego Unix, który wymaga.sock
pliku.Można to obejść, określając host = 127.0.0.1. Spowoduje to, że klient mysql będzie używał protokołu TCP do łączenia się z serwerem.
Zaczerpnięte z dokumentacji MySQL :
źródło
mysql.sock
znikanie bez żadnego powodu w każdej wersji MySQL, z którą współpracowałem (powrót do 4.0). Kiedy tak się dzieje, loguję się w ten sposób, ale używam--protocol=tcp
zamiast--port
. Podczas zamykania mysql usługa szuka pliku gniazda. Tak więc bieganieservice mysql stop
nie powiedzie się. Aby obejść brakujący ból głowy związany z plikiem gniazda, biegammysqladmin -h127.0.0.1 --protocol=tcp -uroot -p shutdown
. Och, BTW, +1 !!!Gniazdo to specjalny pseudoplik służący do przesyłania danych przez odczyt i zapis, a nie przechowywanie danych.
Plik gniazda jest tworzony podczas uruchamiania usługi i usuwany po zakończeniu usługi. Lokalizacja pliku jest zdefiniowana w następujący
/etc/my.cnf
sposób:źródło
W moim przypadku uruchomione
mysqld_safe
utworzyło nowymysqld.sock
plik.Prawdopodobnie nie otrzymasz odpowiedzi z powrotem, ale jeśli ponownie uruchomisz sesję, plik mysqld.sock będzie gdzieś. Znajdź za pomocą
źródło
Miałem ten sam problem z brakującym plikiem mysqld.sock. Poszedłem do katalogu zawierającego mysql, a mianowicie
/usr/bin
w moim przypadku. Potem wydałem poleceniePodwójny mysql nie jest literówką, ale raczej mysql to baza danych, która zawsze będzie istnieć w nowej instalacji MySQL. Nie wiem
--host
,--password
czy--port
są potrzebne, ale ponieważ działało dla mnie przy użyciu tych parametrów, uwzględniam je. Kiedy MySQL pojawił się, przeszedłem do tabeli użytkowników, ustawiając hasło dla roota. Po uruchomieniu MySQL utworzono brakujący plik gniazda. Mam nadzieję, że to komuś pomoże, skoro walczyłem kilka dni.źródło
Jeśli używasz nginx php-fastcgi i masz błąd 502 Bad Gateway, to musisz spojrzeć na konfigurację hosta wirtualnego w pliku konfiguracyjnym nginx. Musisz ustawić lub poprawić
fastcgi_pass
parametr.fastcgi_pass
Jest to zmienna do ustawienia połączenia gniazda między CGI nginx a php.Innym problemem jest to, że binarny skrypt startowy mógł pominąć następujące wpisy (ważne) otwarte przy pomocy:
nano /usr/bin/php-fastcgi
Cała zawartość mojego skryptu startowego / usr / bin / php-fastcgi:
źródło