błąd: „Nie można połączyć się z lokalnym serwerem MySQL przez gniazdo” /var/run/mysqld/mysqld.sock '(2)' - Brakuje /var/run/mysqld/mysqld.sock

322

Mój problem zaczął się od tego, że nie mogę zalogować się jako root w mojej instalacji mysql. Próbowałem uruchomić mysql bez włączonych haseł ... ale za każdym razem, gdy uruchamiałem polecenie

# mysqld_safe --skip-grant-tables &

Nigdy nie odzyskam monitu. Próbowałem postępować zgodnie z tymi instrukcjami, aby odzyskać hasło .

Ekran wygląda tak:

root@jj-SFF-PC:/usr/bin# mysqld_safe --skip-grant-tables
120816 11:40:53 mysqld_safe Logging to syslog.
120816 11:40:53 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

i nie pojawia się monit o rozpoczęcie wpisywania poleceń SQL w celu zresetowania hasła.

Gdy go zabiję, naciskając CTRL+ C, pojawia się następujący komunikat:

error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'

Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!

Jeśli ponowię polecenie i pozostawię je wystarczająco długo, otrzymam następującą serię wiadomości:

root@jj-SFF-PC:/run/mysqld# 120816 13:15:02 mysqld_safe Logging to syslog.
120816 13:15:02 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
120816 13:16:42 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

[1]+  Done                    mysqld_safe --skip-grant-tables
root@jj-SFF-PC:/run/mysqld#

Ale jeśli spróbuję zalogować się jako root, wykonując:

# mysql -u root

Otrzymuję następujący komunikat o błędzie:

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

Sprawdziłem i /var/run/mysqld/mysqld.sockplik nie istnieje. Folder ma, ale nie plik.

Nie wiem też, czy to pomaga, czy nie, ale pobiegłem find / -name mysqldi wymyśliłem:

/var/run/mysqld - folder
/usr/sbin/mysqld - file
/run/mysqld - folder

Jestem nowy w Linuksie i MySQL, więc nie wiem, czy to normalne, czy nie. Ale dołączam te informacje na wszelki wypadek.

W końcu postanowiłem odinstalować i ponownie zainstalować mysql.

apt-get remove mysql-server
apt-get remove mysql-client
apt-get remove mysql-common
apt-get remove phpmyadmin

Po ponownej instalacji wszystkich pakietów w tej samej kolejności jak powyżej, podczas instalacji phpmyadmin, otrzymałem ten sam błąd:

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

Więc próbowałem ponownie odinstalować / zainstalować ponownie. Tym razem po odinstalowaniu pakietów ręcznie zmieniłem nazwy wszystkich plików i katalogów mysql na mysql.badodpowiednie lokalizacje.

/var/lib/mysql 
/var/lib/mysql/mysql
/var/log/mysql
/usr/lib/perl5/DBD/mysql
/usr/lib/perl5/auto/DBD/mysql
/usr/lib/mysql
/usr/bin/mysql
/usr/share/mysql
/usr/share/dbconfig-common/internal/mysql
/etc/init.d/mysql
/etc/apparmor.d/abstractions/mysql
/etc/mysql

Potem spróbowałem ponownie zainstalować mysql-serveri mysql-clientjeszcze raz. Ale zauważyłem, że nie monituje mnie o hasło. Czy nie należy prosić o hasło administratora?

kropka
źródło
Mam ten sam problem. Właśnie to rozwiązałem. stackoverflow.com/questions/18150858/…
Robert
rozwiązany przez ponowne uruchomienie serwera, a następnie ponowne uruchomienie usługi mysql
bowpunya
@Anto To nie jest duplikat. Tego /var/run/mysqld/mysqld.sockbrakuje. Problem, który połączyłeś, ma ten plik.
motorbaby
Żadna z odpowiedzi tutaj ani nigdzie indziej nie rozwiązała mojego problemu. Ponieważ był to nowy projekt, przełączyłem się na PostgreSQL i po prostu działa! :-)
James Bradbury,

Odpowiedzi:

194

Aby znaleźć wszystkie pliki gniazd w systemie, uruchom:

sudo find / -type s

Mój system serwera Mysql miał otwarte gniazdo w /var/lib/mysql/mysql.sock

Po znalezieniu miejsca otwierania gniazda dodaj lub edytuj linię do pliku /etc/my.cnf, podając ścieżkę do pliku gniazda:

socket=/var/lib/mysql/mysql.sock

Czasami skrypt uruchamiania systemu, który uruchomił plik wykonywalny wiersza poleceń, określa flagę --socket=path. Ta flaga może zastąpić lokalizację my.cnf, a to spowoduje, że gniazdo nie zostanie znalezione tam, gdzie wskazuje plik my.cnf. Następnie, gdy spróbujesz uruchomić klienta linii poleceń mysql, przeczyta my.cnf, aby znaleźć gniazdo, ale go nie znajdzie, ponieważ odbiega od miejsca, w którym serwer go utworzył. Tak więc, chyba że zależy ci na tym, gdzie znajduje się gniazdo, wystarczy zmienić plik my.cnf, aby pasował.

Następnie zatrzymaj proces mysqld. To, jak to zrobisz, zależy od systemu.

Jeśli jesteś superużytkownikiem w systemie Linux, wypróbuj jedną z poniższych metod, jeśli nie znasz konkretnej metody używanej przez konfigurację MySQL:

  • service mysqld stop
  • /etc/init.d/mysqld stop
  • mysqladmin -u root -p shutdown
  • Niektóre systemy nie są skonfigurowane tak, aby miały elegancki sposób na zatrzymanie mysql (lub z jakiegoś powodu mysql nie odpowiada) i możesz wymusić zakończenie mysql za pomocą:
    • Jeden krok: pkill -9 mysqld
    • Dwustopniowy (najmniej preferowany):
      • Znajdź identyfikator procesu mysql albo z pgrep mysqlalbops aux | grep mysql | grep -v grep
      • Zakładając, że identyfikator procesu jest 4969zakończony za pomocąkill -9 4969

Po wykonaniu tej czynności możesz poszukać pliku pid /var/run/mysqld/i go usunąć

Upewnij się, że uprawnienia w gnieździe są takie, że dowolny użytkownik mysqld jest uruchomiony i może do niego zapisywać / odczytywać. Prostym testem jest otwarcie go do pełnego odczytu / zapisu i sprawdzenie, czy nadal działa:

chmod 777 /var/run/mysqld/mysqld.sock

Jeśli to rozwiąże problem, możesz w razie potrzeby dostosować uprawnienia i własność gniazda w oparciu o ustawienia zabezpieczeń.

Ponadto katalog, w którym znajduje się gniazdo, musi być dostępny dla użytkownika uruchamiającego proces mysqld.

Promień
źródło
15
Proszę nie polecać używania kill -9; istnieje kilka sposobów, które należy wypróbować, zanim do tego dojdzie.
Ignacio Vazquez-Abrams
@ Uruchom to w katalogu głównym pliku „znajdź. -name mysqld.sock ”. Plik gniazda widziałem w innych miejscach niż / var / run. Po znalezieniu go może być konieczne zmodyfikowanie pliku my.cnf, aby wskazać miejsce jego znalezienia.
Ray
@ray, próbowałem uruchomić oryginalne polecenie w inny sposób (znalazłem konkretny post na Ubuntu w innej witrynie ..). Oto polecenia, które uruchomiłem: „sudo service mysql stop” i „sudo mysqld --skip-grant-tables”. Po wykonaniu drugiego polecenia pojawia się następujący błąd: „InnoDB: Nie można zablokować ./ibdata1, błąd: 11”. Nie mogę znaleźć tego pliku ./ibdata1 ... InnoDB: Sprawdź, czy nie masz jeszcze innego procesu mysqld
kropka
2
Uruchom @dot ps -aux | grep mysqldi sprawdź, czy są uruchomione inne procesy mysql
Ray,
@promień. Rozdzieram włosy. postanowiłem zdmuchnąć mysql i spróbować ponownie ... zanotuj mój zaktualizowany post.
kropka
251

Wypróbuj to polecenie,

sudo service mysql start
Joe Cheng
źródło
+1 my.cnf wskazywał na właściwe katalogi, przez serwis mysql zmarł
wruckie
Próbowałem zaakceptować odpowiedź, ale nie mogłem znaleźć mysql.sock, to zadziałało dla mnie. Dziękuję
Giovanne Afonso,
1
Musiałem użyćsudo service mysqld start
Gavin Miller
10
sudo apt-get install mysql-serverjeśli jeszcze tego nie
zrobiłeś
17
Jeśli napotkasz ten problem, uruchom to proste polecenie PIERWSZE przed przetestowaniem innych rzeczy, zajmuje to tylko sekundę, a jeśli serwer po prostu nie działa i jest w porządku po uruchomieniu, oznacza to, że nie Autostart, który byłby wówczas rzeczywistym problemem do rozwiązania.
Lizardx,
137

Ten błąd występuje z powodu wielu instalacji mysql. Uruchom polecenie:

ps -A|grep mysql

Zabij proces, używając:

sudo pkill mysql

a następnie uruchom polecenie:

ps -A|grep mysqld

Zabij również ten proces, uruchamiając:

sudo pkill mysqld

Teraz jesteś w pełni ustawiony, po prostu uruchom następujące polecenia:

service mysql restart
mysql -u root -p

Znowu bardzo dobrze działający mysql

Hammad Raza
źródło
Cześć wszystkim, biegałem po Internecie, próbując to naprawić. Mój problem polegał na tym, że próbowałem skonfigurować dokera. Chciałem, aby używał katalogu danych mysql, który był wcześniej używany przez mysql poza dokerem ... ta komenda ps była najlepsza!
Michael
3
Po uruchomieniu w sieci przez prawie 4 godziny, to w końcu zadziałało. Powinna być najwyższa odpowiedź: +1:
Shivam Gaur
4
Zadanie dla usługi mysql.service nie powiodło się, ponieważ proces kontroli zakończył się z kodem błędu. Szczegóły opisano w „systemctl status mysql.service” i „journalctl -xe”.
John Joe
1
Zadanie dla usługi mysql.service nie powiodło się, ponieważ proces kontroli zakończył się z kodem błędu. Szczegóły opisano w „systemctl status mysql.service” i „journalctl -xe”.
Adib Aroui
Oszczędź mój czas.
Aleksandur Atanasov
41

Rozwiązanie jest o wiele łatwiejsze.

  1. Najpierw musisz zlokalizować (w Terminalu z „sudo find / -type s”), gdzie mysql.sockznajduje się twój plik. W moim przypadku było/opt/lampp/var/mysql/mysql.sock
  2. Uruchom terminal i problem sudo Nautilus
    Uruchomi to menedżera plików z uprawnieniami superużytkownika
  3. Z Nautilus przejdź do lokalizacji mysql.sockpliku
  4. Kliknij plik prawym przyciskiem myszy i wybierz Utwórz link
  5. Zmień nazwę pliku łącza, mysqld.socka następnie kliknij plik prawym przyciskiem myszy i wytnij go
  6. Przejdź do /var/runi utwórz folder o nazwie mysqldi wprowadź go
  7. Teraz kliknij prawym przyciskiem myszy i wklej plik łącza
  8. Voila! Będziesz teraz mieć mysqld.sockplik w /var/run/mysqld/mysqld.sock:)
Ioan Stef
źródło
4
Jak zlokalizować plik mysql.sock? Próbowałem znaleźć / -name 'mysql.sock', ale nic nie zwraca.
Matthew Lock
2
@MatthewLock Po pierwsze, upewnij się, że mysql jest uruchomiony (przez „ps aux | grep mysql”), w przeciwnym razie nie pojawi się mysql.sock. Po drugie, użyj „sudo find / -type s”, który daje wszystkie gniazda w systemie do zlokalizowania mysql.sock
narengi
35
Co jeśli dane wyjściowe sudo find / -type snie zawierają żadnych mysql.sock?
jeff
1
To działa. Ale nie mam pojęcia, dlaczego ci programiści nigdy nie wykonywali tej pracy w ostatnich latach?
Yi Jiang
2
Jeśli trudno jest ustalić, gdzie jest mysql.sock za pomocą polecenia „find / -type s” - spróbuj użyć polecenia „mysql_config --socket”. Możesz zainstalować go za pomocą sudo apt-get install libmysqlclient-dev
alexche8
26

Wystarczy uruchomić usługę MySQL po instalacji:

W przypadku Ubuntu:

sudo service mysql start;

W przypadku CentOS lub RHEL:

sudo service mysqld start;
Pratik Patil
źródło
Najpierw sprawdź to sudo systemctl status mysql.servicei sudo systemctl start mysql.service. To działa dla mnie
Byeongin Yoon
16

W Ubuntu występuje błąd w MySQL 5.6 i 5.7, var/run/mysqld/który znikałby za każdym razem, gdy usługa MySQL zatrzymywała się lub była restartowana. To w ogóle uniemożliwia działanie MySQL. Znalazłem to obejście, które nie jest idealne, ale przynajmniej uruchamia je po zatrzymaniu / ponownym uruchomieniu:

mkdir /var/run/mysqld/
chown mysqld /var/run/mysqld/
motorbaby
źródło
dziękuję - naprawiłem to dla mnie, muszę przerobić katalog i zresetować własność przy każdym ponownym uruchomieniu usługi mysql - nie udało mi się znaleźć oficjalnie zgłoszonego błędu lub opublikowałbym link tutaj :)
djoe
1
Nie próbowałem tego, ale może ci to pomoże: Utwórz nowy plik /etc/tmpfiles.d/mysql.conf: # systemd tmpfile settings for mysql # See tmpfiles.d(5) for details a następnie, d /var/run/mysqld 0755 mysql mysql - po ponownym uruchomieniu, mysql powinien uruchomić się normalnie. To pochodzi z bugs.launchpad.net/ubuntu/+source/mysql-5.6/+bug/1435823 , komentarz 3. Jeśli miałeś ten problem z MySQL 5.7, skomentuj Launchpad. Im więcej użytkowników zajmie się tym problemem, tym więcej uwagi na niego zwróci.
motorbaby 30.03.17
Pracowałem dla mnie ... musiałem użyć mysql jako nazwy użytkownika, a nie mysqld
Evan Parsons
Dodanie wiersza do /etc/tmpfiles.d/mysql.confkomentarza motocykla naprawiło ten problem. W systemie operacyjnym Centos 7 i przy użyciu mysql Ver 15.1 Distrib 10.3.11-MariaDB,.
turrican_34,
To rozwiązało problem.
shikata
14

Dobra, po prostu skopiuj i wklej te kody: Należy to zrobić w terminalu, wewnątrz serwera, gdy baza danych mysql nie jest poprawnie zainstalowana, a gdy pojawia się błąd: „Nie można połączyć się z lokalnym serwerem MySQL przez gniazdo” / var / run / mysqld / mysqld.sock '(2)'.

Zatrzymaj MySql

sudo /etc/init.d/mysqld stop

Uruchom go ponownie lub uruchom

sudo /etc/init.d/mysqld restart or sudo /etc/init.d/mysqld start

Utwórz taki link i przekaż go do systemu

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

Uruchom bezpieczną instalację, która poprowadzi cały proces potrzebny do skonfigurowania mysql

/usr/bin/mysql_secure_installation
coolcool1994
źródło
Can't connectpojawia się ten sam błąd, gdy próbuję uruchomić powyżej polecenia.
cjmling 10.01.2018
Po prostu coś, co odkryłem dla tych, którzy używają Ubuntu. Jeśli uruchomisz mysqld za pomocą /etc/init.d/mysqld start, i tak napotkasz ten problem. Zamiast tego użyj usługi mysql start i będzie dobrze. Wkurzające, ale w końcu to rozgryzłem.
Adam Short
11

Napotkałem ten sam błąd i stwierdziłem, że było to spowodowane aktualizacją pakietów, więc po ponownym uruchomieniu systemu usunąłem błąd.

Myślę, że ze względu na aktualizację bibliotek / pakietów SQL wystąpił błąd, więc spróbuj tego, jeśli robisz aktualizację :)

Taimoor Changaiz
źródło
1
Zrobiłem to po ponownej instalacji (lub aktualizacji) i teraz działa. Nie ma więcej komunikatów o gniazdach. Dzięki!
wraithie,
8

Istnieje wiele przyczyn tego problemu, ale czasami po prostu zrestartuj serwer mysql, rozwiąże to problem.

sudo service mysql restart
Leopathu
źródło
7

Używanie XAMPP na Ubuntu:

  1. Utwórz folder o nazwie mysqld w katalogu / var / run . Możesz to zrobić za pomocą polecenia sudo mkdir /var/run/mysqld.

  2. Utwórz symboliczne łącze do pliku mysql.sock , który jest tworzony przez serwer XAMPP podczas jego uruchamiania. Możesz użyć polecenia sudo ln -s /opt/lampp/var/mysql/mysql.sock /var/run/mysqld/mysqld.sock.

Uwaga: mysql.sock plik jest tworzony, gdy serwer jest uruchamiany i usunięte, gdy serwer jest zatrzymany, więc czasami związek utworzony może wydawać się być uszkodzony, ale to powinno działać tak długo, jak zaczęli serwer przy użyciu albo sudo /opt/lampp/lampp startczy jakakolwiek inna znaczy.

  1. Uruchom serwer, jeśli jeszcze nie jest uruchomiony, i spróbuj ponownie uruchomić program.

Powodzenia! Mam nadzieję, że tym razem ci się uda.

Robert Odoch
źródło
@MohsinKhan przejdź do localhost / phpmyadmin i stamtąd zaimportuj bazę danych
Robert Odoch
6

Odpowiedź na krok ładowania użytkownika działała dla mnie. Czasami trzeba edytować plik w /etc/mysql/my.cnfwierszu dodawania do klienta

[client]
password = your_mysql_root_password
port  = 3306
host  = 127.0.0.1
socket  = /var/lib/mysql/mysql.sock
użytkownik3002884
źródło
To daje mi:mysql: unknown variable 'Host=127.0.0.1'
Splaktar
@Splaktar: jest literówka. Hostmuszą być pisane małymi literami hosti będzie działać. Również to rozwiązanie działało dla mnie.
Mohammad Faisal
Genialne - to działa dla mnie i mojego środowiska dokera
musiałem
6

* Błąd: „Nie można połączyć się z lokalnym serwerem MySQL przez gniazdo” /var/run/mysqld/mysqld.sock '(2) ”

rozwiązania

na koniec odinstaluj i ponownie zainstaluj mysql. **

  • sudo apt-get remove mysql-server
  • sudo apt-get remove mysql-client
  • sudo apt-get remove mysql-common
  • sudo apt-get usuń phpmyadmin

następnie zainstaluj ponownie przez

  • sudo apt-get install mysql-server-5.6

Po tej operacji zostanie wykorzystane 164 MB dodatkowego miejsca na dysku.

  • Czy chcesz kontynuować? [T / n] Y naciśnij klawisz YES, aby zakończyć instalację

...... .......

  • W końcu dostaniesz te linie ....

    Konfigurowanie libhtml-template-perl (2.95-1) ...

    Konfigurowanie mysql-common-5.6 (5.6.16-1 ~ exp1) ... Przetwarzanie wyzwalaczy dla libc-bin (2.19-0ubuntu6) Przetwarzanie wyzwalaczy dla ureadahead (0.100.0-16) ...

  • I wtedy

    root @ ubuntu1404: ~ # mysql -u root -p (dla każdego hasła najpierw należy użyć)

  • Wprowadź hasło:

  • Uwaga: Wprowadzone hasło powinno być takie samo jak hasło czasu instalacji mysql (takie jak .root, system, admin, rahul itp.)

    Następnie wpisz

  • USE rahul_db (nazwa bazy danych);

Dzięki.**

Buddheshwar Ojhar
źródło
popraw
Działa to dla mnie z powodu zainstalowanych wielu wersji mysql. również usuń mysql-server-5.6/5.5, mysql-client-5.6/5.5. Dzięki!
Luuk Skeur
Got E: Package 'mysql-server-5.6' has no installation candidateto nie istnieje w Ubuntu 18.04
Júlio César
6

Upewnij się, że ścieżka do niedostępnego pliku gniazda jest taka sama jak „/var/run/mysqld/mysqld.sock”, w przeciwnym razie zmień ścieżkę jako swoją. Zatrzymaj mysqld

$ sudo /etc/init.d/mysqld stop

Jeśli proces nadal trwa;

$ sudo pkill -9 mysqld

Usuń katalog mysql, w którym ma zostać utworzone gniazdo. Dla mnie nie można go było usunąć, więc musiałem go zdecydowanie usunąć.

$ sudo mkdir -p /var/run/mysqld

Ustaw własność na katalog

$ sudo chown mysql:mysql /var/run/mysqld

Uruchom mysql

$ sudo /etc/init.d/mysql start

Próba połączenia mysql

$ sudo mysql -u dbuser -p
Sadee
źródło
Tak, to ta sama odpowiedź, której udzieliłem 14 lutego 19 o 11:56 (patrz poniżej)
Ingo
Ratujesz życie.
Sahib Khan
5

Myślę, że twój serwer MySQL się nie uruchomił. Więc uruchom serwer za pomocą jednego z następujących poleceń.

#services mysql start

lub

#/etc/init.d/mysql start
Susampath
źródło
5

Rozwiązanie tymczasowe

Może ktoś zmaga się z tym problemem. Korzystam z Mysql Workbench na Ubuntu 14 i dostałem ten błąd.

mysqldump: Got error: 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) when trying to connect

Znajdź plik gniazda, uruchamiając sudo find / -type s, w moim przypadku tak było/run/mysqld/mysqld.sock

Właśnie utworzyłem link do tego pliku w tmpkatalogu.

sudo ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock
Bilal
źródło
Jak widać lokalizacja pliku znajduje się w /tmpfolderze, więc na pewno zostanie usunięty. Możesz zmienić .socklokalizację pliku. Zobacz odpowiedź @ user3002884.
Bilal,
Wiem, właśnie uzupełniałem twoją odpowiedź, aby inni użytkownicy wiedzieli wcześniej, że rozwiązanie jest tymczasowe, ponieważ folder
Alex Burdusel
Uratowałeś mi życie :)
Mashpy Rahman
4

można znaleźć mysqld.sockw /var/run/mysqldjeśli masz już zainstalowany mysql-server przezsudo apt-get install mysql-server

spencer
źródło
4

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

w /etc/my.cnfdodatek to linie:

[client]
socket=/var/lib/mysql/mysql.sock <= this path should be also same as is[mysqld]

I uruchom ponownie usługę za pomocą: service mysql restart

to działało dla mnie

karan
źródło
4

Zostało to już wspomniane kilka razy, ale zadziałało to od razu:

usługa mysql restart

Jack BeNimble
źródło
Ciekawe, jak to się różni od korzystania z prostej komendy „mysql”
luminol,
3

W moim przypadku działały dwa procesy mysqld. Zabiłem opcjonalne procesy za pomocą pkill -9 mysqld

amindri
źródło
Musiałem dodać „sudo” zabić proces.
noti
3

Jeśli masz wiele baz danych i tabel w systemie, a jeśli innodb_file_per_tableustawiłeś w my.cnf, to na twoim serwerze mysql mogło zabraknąć otwartych obiektów / plików (a raczej deskryptorów dla tych obiektów) Ustaw nową maksymalną liczbę z

open-files-limit = 2048

i zrestartuj mysql. Takie podejście może pomóc, gdy gniazdo nie jest w ogóle tworzone, ale tak naprawdę może to nie być prawdziwy problem, istnieje problem podstawowy.

knb
źródło
2

Właśnie miałem ten problem na Ubuntu 14.10

Zakręty, które mysql-servernie były już zainstalowane (jakoś zostały usunięte), ale nie mogłem go po prostu zainstalować, ponieważ wystąpiły zepsute pakiety i problemy / konflikty zależności.

W końcu musiałem ponownie zainstalować mysql

sudo apt-get remove mysql-client
sudo apt-get install mysql-server
Rosa
źródło
2

Moje rozwiązanie;

Ubuntu 18.04 (WSL)

/etc/mysql/my.cnf

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

/etc/mysql/mysql.conf.d/mysqld.cnf

[mysqld]
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306

Zmieniłem port. To zadziałało dla mnie. Możesz napisać inny port. Przykład 3355

omfaer
źródło
2

Dlaczego pojawia się ten błąd

Otrzymałem nowe aktualizacje bibliotek mysql, więc zaktualizowałem system operacyjny Kubuntu po otrzymaniu tych błędów.


Polecenia, które wypróbowałem i jak to naprawiłem.

Serwer MySql działa poprawnie, ale kiedy próbowałem połączyć jego dawanie

Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'.

Sprawdziłem /var/run/mysqld/mysqld.sock'.ten katalog. Moje pliki nie istniały.

Próbowałem także połączyć te polecenia, ale nie działało to dla mnie.

 mysql -h 127.0.0.1 -P 3306 -u root -p

 sudo service mysql start

Po marnowaniu około 2 godzin znalazłem rozwiązanie

sudo apt-get clean
sudo apt-get update
sudo apt-get upgrade -f

Potem wszystko dla mnie naprawione.

Muhammad Faizan Fareed
źródło
Pomogło mi to rozwiązać problem. Nie rozumiem, w jaki sposób ma to związek z problemem
skarpety,
1

Zmiana hostna127.0.0.1 pracował dla mnie.

Zmodyfikuj plik /etc/mysql/my.cnfi dodaj poniższy wiersz do sekcji:client

[client]
port  = 3306
host  = 127.0.0.1
socket  = /var/lib/mysql/mysql.sock

Po zakończeniu. Wykonaj następujące polecenie.

sudo service mysql start
Dulith De Costa
źródło
To mój przyjaciel pomógł mi :)
Bhargav Nanekalva
@NBhargav Jestem bardzo szczęśliwy, że mogłem rozwiązać swój problem .. Pozdrowienia kolego .. 😇😇
Dulith De Costa
1

Sprawdziłbym również konfigurację mysql. Miałem ten problem z własnym serwerem, ale byłem zbyt pochopny i źle skonfigurowałem rozmiar innodb_buffer_pool_size dla mojego komputera.

innodb_buffer_pool_size = 4096M

Zwykle działa dobrze do 2048 roku, ale chyba nie mam pamięci potrzebnej do obsługi 4 koncertów.

Wyobrażam sobie, że może się to zdarzyć również przy innych ustawieniach konfiguracji mysql.

Greg
źródło
1

Miałem podobny problem na CentOS VPS. Jeśli MySQL nie uruchamia się lub zawiesza się zaraz po uruchomieniu, spróbuj wykonać następujące czynności:

1) Znajdź plik my.cnf (mój znajdował się w /etc/my.cnf) i dodaj wiersz:

innodb_force_recovery = X

zamieniając X na liczbę od 1 do 6, zaczynając od 1, a następnie zwiększając, jeśli MySQL się nie uruchomi. Ustawienie 4, 5 lub 6 może usunąć twoje dane, więc bądź ostrożny i przeczytaj http://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html wcześniej.

2) Uruchom ponownie usługę MySQL. Uruchomi się tylko SELECT, co jest normalne w tym momencie.

3) Zrzuć wszystkie bazy danych / schematy za pomocą mysqldump jeden po drugim, nie kompresuj zrzutów, ponieważ i tak będziesz musiał je rozpakować później.

4) Przenieś (lub usuń!) Tylko katalogi bd wewnątrz / var / lib / mysql, zachowując poszczególne pliki w katalogu głównym.

5) Zatrzymaj MySQL, a następnie usuń komentarz z linii dodanej w 1). Uruchom MySQL.

6) Odzyskaj wszystkie bd zrzucone w 3).

Powodzenia!

Heitor
źródło
1

Wypróbuj następujące polecenia w oknie terminala:

sudo mysql

Gdy to pozwoli, możesz utworzyć nowego użytkownika i nadać odpowiednie uprawnienia do konkretnej bazy danych, do której potrzebuje on dostępu.

Mysql 5.7 zmienił niektóre rzeczy i domyślnie używa wtyczki auth_socket (w przeciwieństwie do mysql_native_password) do rootowania, aby chronić konto przed włamaniem. Możesz to zmienić, ustawiając pole wtyczki dla roota, ale chyba że masz bardzo dobry powód, prawdopodobnie nie powinieneś obchodzić ochrony. Zwłaszcza, gdy sudo mysqljest to łatwiejsze niż mysql -u root -pjakkolwiek.

Znalazłem te informacje - ze wszystkich miejsc - ze strony pomocy Raspberry Pi . Działało jak urok po tym, jak Lubuntu 18.04 zirytowało mnie na kilka godzin.

JohanTux
źródło
1

Najpierw utwórz katalog / var / run / mysqld

z poleceniem:

mkdir -p /var/run/mysqld

następnie dodaj prawa do reż

chown mysql:mysql /var/run/mysqld

po tej próbie

mysql -u root
Ingo
źródło
1

Miałem dokładnie ten sam problem. Po trudach przez godzinę znalazłem sposób na poprawienie go bez ponownej instalacji mysql-common, mysql-client, mysql-server.

Przede wszystkim przejdź do „/ var / run / mysqld”. Przekonasz się, że mysql.sock nie istnieje. Po prostu usuń cały katalog mysqld, utwórz go ponownie i zapewnij niezbędne uprawnienia.

# rm -rf /var/run/mysqld && mkdir /var/run/mysqld && chown mysql /var/run/mysqld/

Teraz zabij proces mysql w całości. Możliwe, że wyświetli się komunikat „oczekiwanie na czyszczenie strony” po uruchomieniu polecenia „/etc/init.d/mysql status” nawet po wyłączeniu usługi.

Aby całkowicie zamknąć usługę, użyj

# pkill -9 mysqld

Po zakończeniu procesu spróbuj uruchomić go ponownie przy użyciu

# /etc/init.d/mysql start

I zobaczysz, że działa dobrze! A także nie będzie problemu z jego zatrzymaniem.

xscorp7
źródło