BŁĄD 2002 (HY000): Nie można połączyć się z lokalnym serwerem MySQL przez gniazdo „/var/run/mysqld/mysqld.sock” (2)

441

Zainstalowałem LAMP na Ubuntu 12.04 LTS (Precise Pangolin), a następnie ustawiłem hasło roota na phpMyAdmin . Zapomniałem hasła i teraz nie mogę się zalogować. Kiedy próbuję zmienić hasło przez terminal, otrzymuję:

BŁĄD 2002 (HY000): Nie można połączyć się z lokalnym serwerem MySQL przez gniazdo „/var/run/mysqld/mysqld.sock” (2)

Jak mogę to naprawić? Nie mogę otworzyć LAMP, odinstalować go ani zainstalować ponownie.

sushmit sarmah
źródło
Prawdopodobnie ponowna instalacja jest łatwiejsza: stackoverflow.com/a/31984482/763744
Zernel
Zresetuj hasło, zatrzymując MySQL i uruchamiając go w trybie awaryjnym pomijając --grant tabele
davejal
wpisz to w swoim terminalu „sudo apt-get install mysql-server”
Humphrey
Uruchom lub uruchom ponownie usługę mysql i sprawdź. sudo /etc/init.d/mysql start lub sudo /etc/init.d/mysql restart
Jitendra Patel
systemctl start mariadb.service
Thewebus

Odpowiedzi:

253

Kiedyś miałem ten problem i rozwiązałem go, instalując mysql-server, więc upewnij się, że zainstalowałeś mysql-server, a nie mysql-clientcoś innego.

Ten błąd oznacza, że ​​plik /var/run/mysqld/mysqld.socknie istnieje, jeśli nie został zainstalowany mysql-server, plik nie istniałby. W takim przypadku zainstaluj go za pomocą

sudo apt-get install mysql-server

Ale jeśli mysql-serverjest już zainstalowany i działa, musisz sprawdzić pliki konfiguracyjne.

Pliki konfiguracyjne to:

/etc/my.cnf
/etc/mysql/my.cnf
/var/lib/mysql/my.cnf

W /etc/my.cnf, konfiguracja pliku gniazda może być, /tmp/mysql.sockaw /etc/mysql/my.cnfkonfiguracji pliku gniazda może być/var/run/mysqld/mysqld.sock . Więc usuń lub zmień nazwę /etc/mysql/my.cnf, pozwól mysql użyć /etc/my.cnf, wtedy problem może zostać rozwiązany.

towry
źródło
Możesz mieć uruchomionego demona mysql i rdzeń serwera mysql, ale musisz zainstalować serwer mysql, czyli pliki binarne ORAZ konfigurację systemowej bazy danych!
Cedric
99
sudo apt-get install mysql-serverzainstalować mysql na ubuntu
towry
9
Gdybym musiał wyjaśnić technicznie, powiedziałbym: 1) Jeśli korzystasz z „mysql -u <nazwa_użytkownika> -h <MySQL_Server_address> -p”, to w rzeczywistości używasz klienta mysql, aby uzyskać dostęp do serwera mysql. Jeśli nie masz zainstalowanego serwera mysql na adresie / adresie IP wymienionym za pomocą „-h”, pojawi się powyższy błąd. Wynika to z faktu, że nie jest on w stanie połączyć się z serwerem MySQL przez gniazdo mysql.sock 2) Jeśli serwer Mysql jest już zainstalowany, powinien być uruchomiony. Jeśli nie, zauważysz ten sam błąd. Uruchom go więc na wskazanym serwerze.
Mayur Nagekar
1
Może się to również zdarzyć, jeśli spróbujesz zmienić katalog, w którym przechowywana jest baza danych, ale przypisać niewłaściwy katalog w pliku konfiguracyjnym (np. Literówkę). Zamiast powiedzieć ci, że katalog literówek nie istnieje, powie ci, że nie masz uprawnień dostępu do niego.
Michael
4
Jako pierwszy krok zaleciłbym próbę ponownego uruchomienia procesu serwera (zobacz inne rozróżnienia serwer vs klient). Spróbuj ponownie uruchomić sudo /etc/init.d/mysql. Zwykle ponowna instalacja nie jest konieczna. Polecam najpierw sprawdzić pliki dziennika. Nie tylko plik dziennika mysql, ale także / var / log / syslog, ponieważ mogłeś mieć awarię serwera powodującą awarię mysql jako efekt uboczny.
Rein
212

Spróbuj tego:

mysql -h 127.0.0.1 -P 3306 -u root -p <database>

Ponadto (aby sprawdzić, czy działa):

telnet 127.0.0.1 3306 

Prawdopodobnie jest to po prostu błędna konfiguracja my.cnfpliku /etc/somewhere(w zależności od dystrybucji Linuksa ).

Yannick
źródło
1
Otrzymuję ten sam błąd. I sprawdziłem, a domyślne powiązanie w pliku main i my.cnf jest już ustawione na 127.0.0.1. Jednak użycie powyższego polecenia pozwoliło mi się połączyć. Będę musiał kontynuować polowanie, aby zobaczyć, dlaczego samo wykonanie polecenia „mysql” powoduje błąd.
cchiera
1
Dostaję telnet: nie można połączyć się ze zdalnym hostem: połączenie odrzucone w wyniku polecenia telnet. Jednak apache nadal działa, ponieważ mogę otworzyć hosta lokalnego
Rishi Dua
@ cchiera Wiesz, wcześniej nie miałem tego błędu. Ale kiedy chciałem połączyć się z moją bazą danych przez aplikację na system iOS za pomocą tunelu ssh, dostałem ten błąd 2013. Aby go rozwiązać, musiałem edytować /etc/my.cnfi komentować #bind-address = 127.0.0.1 Reference 1 Reference 2 . Wtedy mógłbym się połączyć. Po tym zdałem sobie sprawę, że dostaję teraz ten błąd z 2002 roku, który zaprowadził mnie do tej odpowiedzi i teraz znów działa. Zdecydowanie zgadzam się z tobą, otrzymując wyjaśnienie, dlaczego po prostu pisać mysqlbez -hzgłaszania błędu.
Pathros,
Uwaga: mysql -h localhostnie działa. Pamiętaj, aby użyć mysql -h 127.0.0.1zgodnie z odpowiedzią.
vadasambar
Jak rozwiązać ten problem, jeśli mogę zalogować się za pomocą polecenia z tej odpowiedzi?
Carlos A. Jimenez Holmquist
128

Widzę wszystkie te odpowiedzi, ale żadna z nich nie oferuje opcji resetowania hasła i żadnej zaakceptowanej odpowiedzi . Rzeczywistym pytaniem jest to, że zapomniał hasła, więc musi się zresetować, nie sprawdzać, czy jest uruchomiony, czy nie (zainstalowany czy nie), jak sugeruje większość tych odpowiedzi.


Aby zresetować hasło

Wykonaj następujące kroki (może być pomocne, jeśli naprawdę zapomniałeś hasła i możesz je wypróbować w dowolnym momencie, nawet jeśli nie jesteś w takiej sytuacji):

  1. Zatrzymać mysql

    sudo /etc/init.d/mysql stop

    Lub dla innych wersji dystrybucji:

    sudo /etc/init.d/mysqld stop
  2. Uruchom MySQL w trybie awaryjnym

    sudo mysqld_safe --skip-grant-tables &
  3. Zaloguj się do MySQL przy użyciu roota

    mysql -uroot
  4. Wybierz bazę danych MySQL do użycia

    use mysql;
  5. Zresetuj hasło

    -- MySQL version < 5.7
    update user set password=PASSWORD("mynewpassword") where User='root';
    
    -- MySQL 5.7, mysql.user table "password" field -> "authentication_string"
    
    update user set authentication_string=password('mynewpassword') where user='root';
  6. Opróżnij uprawnienia

    flush privileges;
  7. Uruchom ponownie serwer

    quit
  8. Zatrzymaj i uruchom serwer ponownie

    Ubuntu i Debian:

    sudo /etc/init.d/mysql stop
    ...
    sudo /etc/init.d/mysql start

    W CentOS, Fedorze i RHEL:

    sudo /etc/init.d/mysqld stop
    ...
    sudo /etc/init.d/mysqld start
  9. Zaloguj się przy użyciu nowego hasła

    mysql -u root -p
  10. Wpisz nowe hasło i ponownie ciesz się serwerem, jakby nic się nie wydarzyło

To zostało zaczerpnięte z Resetuj hasło root MySQL .

davejal
źródło
Aktualizacja hasła użytkownika nie działała dla mnie, jednak po zalogowaniu się na monitorze MySQL i skorzystaniu z bazy danych mysql repair table user use_frmudało mi się rozwiązać ten problem. - stackoverflow.com/questions/4297592/…
Craig van Tonder
20
W MySQL 5.7 pole hasła w polu tabeli mysql.user zostało usunięte, teraz nazwa pola to „authentication_string”, więc (5) powinno byćupdate user set authentication_string=password('mynewpassword') where user='root';
Daniel
Czy znasz sposób na uczynienie z tego skryptu bash? Wydaje mi się, że potrzebuję go za każdym razem, gdy ponownie uruchamiam pudełko.
vphilipnyc
Coś mi mówi, że chcesz obejść to rozwiązanie, ale powinieneś spróbować dowiedzieć się, dlaczego musisz to robić za każdym razem i to naprawić. Co do skryptu, zadaj nowe pytanie i opublikuj to, co już próbowałeś, może inni mogą pomóc
davejal
2
Działa to dla mnie świetnie, ale najpierw musiałem wdrożyć to rozwiązanie: stackoverflow.com/questions/42153059/...
Andrew Fox
68

Próbowałem następujących kroków:

  1. Zaloguj się jako super userlub użyjsudo
  2. Otwórz /etc/mysql/my.cnfza pomocą gedit
  3. Znajdź bind-addressi zmień jego wartość na adres IP komputera hosta serwera bazy danych. Dla mnie to był localhostlub127.0.0.1
  4. Zapisz i zamknij plik.
  5. Wróć do terminala i wykonaj sudo service mysql start

I zadziałało dla mnie.

rshahriar
źródło
4
Z tego właśnie uruchomiłem ponowne uruchomienie mysql usługi sudo i zadziałało.
Orane
W moim przypadku błąd polegał na zmianie adresu IP, więc ustawiłem bind-address = localhost
Nicolás Arias
@rshahriar w moim pliku /etc/my.cnf nie ma nic takiego jak adres-wiążący. Czy dobrym pomysłem jest dodanie pola
RCBian
@SilvioDelgado Nie, jeśli kiedykolwiek chcesz połączyć się przez tunelowanie ssh. Wyjaśnienie tutaj
Pathros,
zrestartowanie usługi mysql również zadziałało dla mnie, ale nadal nie jestem pewien, gdzie znaleźć dziennik błędów, aby ustalić przyczynę i spróbować zapobiec ponownemu wystąpieniu ...
Maleka
41

Rozwiązałem ten problem, wykonując następujące polecenie:

mysql.server start

A jeśli używasz komputera Mac i użyłeś naparu do zainstalowania mysql, po prostu użyj:

brew services start mysql
sbodanis
źródło
35

Miałem podobny problem. mysql nie chce się uruchomić:

sudo service mysql start
start: Job failed to start

Jeśli wyłączyłem zbroję:

sudo aa-complain /etc/apparmor.d/*

problem zniknął. Problem polegał na tym, że mysqld próbował uzyskać dostęp do /run/mysqld/mysqld.sock, ale profil apparmor dał tylko zgodę na /var/run/mysqld/mysqld.sock (/ var / run jest symlinkowany do / run, więc są to w rzeczywistości to samo). Nie jestem pewien, dlaczego mysqld nie używa ścieżki var, ponieważ jest to ustawione we wszystkich plikach konfiguracyjnych, ale możesz rozwiązać problem, dodając następujące informacje do /etc/apparmor.d/usr.sbin.mysqld

/run/mysqld/mysqld.pid rw,
/run/mysqld/mysqld.sock rw,
dkoes
źródło
Nie wiedziałem, że muszę nazwać „usługa sudo mysql start”. Ostatnim razem, gdy instalowałem MySQL na Ubuntu, myślę, że uruchomił się automatycznie po instalacji. MariaDB na Manjaro wymaga jawnego uruchomienia usługi po instalacji.
dmiller309,
31

W moim przypadku dysk był pełny i mysqld nie mógł się już uruchomić.

Spróbuj ponownie uruchomić usługę mysql.

> service mysql restart

lub

> service mysql stop

> service mysql start

Jeśli nie rozpoznaje stoppolecenia, to zdecydowanie jest to miejsce na dysku. Powinieneś sprawić, aby część partycji mysqlzostała przydzielona lub powiększyć dysk.

Sprawdź miejsce na dysku za pomocą

> df -h
Martin Schultz
źródło
2
To samo przydarzyło mi się - pełny dysk. Oczyściłem trochę miejsca, uruchomiłem ponownie i problem zniknął.
Darren,
2
Jeśli taki jest problem podczas wykonywania: „/etc/init.d/mysqld start” poinformuje, że partycja dysku jest pełna
Tickon
Dla mnie to samo, dysk 100%. Oczyszczone miejsce i rozpoczęcie usługi ok
Hugo
28

Rozwiązałem to, zabijając mysqlproces:

ps -ef | grep mysql
kill [the id]

A potem ponownie uruchomiłem serwer z:

sudo /etc/init.d/mysql restart

Ale startdziała również:

sudo /etc/init.d/mysql start

Potem zalogowałem się admini skończyłem.

Wartari
źródło
cóż, faktycznie przerywałem mysql zanim się zawiesił. Potem pojawia się „* Proszę spojrzeć na syslog”. i „ERROR 2002 (HY000): Nie można połączyć się z lokalnym serwerem MySQL przez gniazdo„ /var/run/mysqld/mysqld.sock ”(111)”. W końcu zdaję sobie sprawę, że próbuje się odzyskać, więc zabijam go i uruchamiam ponownie.
cwhsu,
Istnieją (rzadkie) sytuacje, w których „mysql start” kończy się niepowodzeniem, więc musisz użyć argumentu „restart”. Jeśli chcesz zabić proces demona, lepiej użyć argumentu „stop” zamiast polecenia kill. Jednak polecenie killall jest wygodniejsze niż polecenie kill (killall mysqld).
Rein
Zabicie procesu MySQL, a następnie ponowne uruchomienie MySQL zadziałało, miło
Vishal Shetty
21

W jakiś sposób proces serwera MySQL nie utworzył gniazda lub klient szuka gniazda w niewłaściwym miejscu.

Moją pierwszą sugestią byłoby sprawdzenie, czy serwer MySQL jest uruchomiony. Druga sugestia może brzmieć: czy serwer MySQL działa na innym hoście? Jeśli tak, dodaj -h <hostname>flagę do swojego klienta MySQL w terminalu.

Jeśli MySQL rzeczywiście działa i działa lokalnie, sprawdź swój my.cnfplik. Powinna być taka linia

socket = /var/run/mysqld/mysqld.sock

Sprawdź, czy odpowiada to lokalizacji gniazda, o której wspomniałeś w swoim poście.

Z doświadczenia powiedziałbym, że najbardziej prawdopodobnym scenariuszem jest to, że twój serwer MySQL albo w ogóle nie działa, albo nie działa na tym samym hoście, na którym uruchamiasz klienta MySQL z terminala.

Wouter
źródło
19

Ten sam problem wystąpił po ponownym uruchomieniu serwera produkcyjnego. Używam Debiana 8.1 (Jessie) na kropli DigitalOcean.

Oto, co zrobiłem, aby rozwiązać problem:

  1. Sprawdź, czy plik /var/run/mysqld/mysqld.sockistnieje. Jeśli nie, ręcznie utwórz go, wprowadzając touch /var/run/mysqld/mysqld.sock(co musiałem zrobić).

  2. Tak więc proces MySQL może korzystać z tego pliku. Zmień własność tego pliku, wprowadzając chown mysql /var/run/mysqld/mysqld.sock.

  3. Po wykonaniu „2” uruchom ponownie usługę MySQL, wprowadzając service mysql restartlub /etc/init.d/mysql restart.

Po wykonaniu powyższych kroków mój problem został rozwiązany. Rzadko mam ten problem i prawdopodobnie istnieje lepszy sposób, więc w razie potrzeby zapewnij konstruktywną informację zwrotną :).

Obrabować
źródło
1
Zauważyłem, że pliku nie ma i właśnie zrestartowałem serwer mysql. Automatycznie utworzył plik i uruchomił się dobrze. Dzięki za prowadzenie.
Sojurn,
15

Twój serwer mysql może nie działać. Upewnij się, że działa, wpisując mysql.server startw terminalu.

Mojżesz Wasswa
źródło
15

Sprawdź "bind-adress"parametr w my.cnf.

W przeciwnym razie spróbuj z poleceniem:

mysql -h 127.0.0.1 -P 3306 -u root -p
  • -h dla hosta 127.0.0.1, czyli localhost

  • -P (zauważ -P jako wielkie litery) dla portu 3306, czyli domyślnego portu dla MySQL

Amit Girme
źródło
11

Oto, co zadziałało dla mnie:

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

To tworzy link.

Użytkownik
źródło
Nie działało dla mnie :( To tworzy dowiązanie symboliczne między dwoma folderami askubuntu.com/a/56340/242873
Michael
11

Jeśli używasz Amazon EC2 i masz ten problem w instancji, musisz tylko:

sudo yum install mysql-server
sudo service mysqld restart

Amazon EC2 nie ma zainstalowanego serwera (zainstalowany jest tylko klient), więc w takim przypadku musisz zainstalować go na swojej instancji, a następnie spróbuj

 mysql -u root -p

aby sprawdzić, czy to zadziałało.

Murtaza Kanchwala
źródło
Uruchomienie mysqld.service nie powiodło się: Nie znaleziono jednostki mysqld.service. W Ubuntu 16.04
Ketav Chotaliya
9

Myślę, że ilekroć pojawi się błąd

BŁĄD 2002 (HY000): Nie można połączyć się z lokalnym serwerem MySQL przez gniazdo „/var/lib/mysql/mysql.sock”

Polecę najpierw sprawdzić, czy twój mysqldemon działa ... Przez większość czasu domyślnie nie działa. Możesz to sprawdzić przez /etc/init.d/mysqld status.

Jeśli nie działa, uruchom go najpierw:

.../etc/init.d/mysqld start.

Założę się, że będzie działać w 110%.

Vikash Kumar Singh
źródło
9

Zamiast używać localhost:

mysql -u myuser -pmypassword -h localhost mydatabase

Użyj 127.0.0.1

mysql -u myuser -pmypassword -h 127.0.0.1 mydatabase

(zwróć również uwagę, brak spacji między -p a mypassword)

Cieszyć się :)

mpinvidio
źródło
Nie możesz również dołączyć swojego hasła z wiersza poleceń dla bezpieczeństwa, używając tego wiersza: mysql -u mój użytkownik -p -h 127.0.0.1 mydatabase MySQL zapyta cię o hasło, a nie je powtórzy.
DDay
1
To rozwiązało dla mnie. Jednak nadal zastanawiam się, dlaczego 127.0.0.1działa, a localhostnie działa ?!
not2savvy
9

Upewnij się, że masz kopie zapasowe ważnych baz danych, a następnie spróbuj odinstalować rzeczy związane z MySQL :

apt-get remove --purge mysql\*

Następnie zainstaluj go ponownie :

apt-get install mysql-server mysql-client

To działało dla mnie i dane zostały zachowane.

Jeśli PHP MySQL pokazuje błędy, być może będziesz musiał ponownie zainstalować PHP MySQL :

apt-get install php5-fpm php5-mysql
użytkownik3162468
źródło
Myślę, że to śmiertelna broń. Próbowałem wszystkiego, ale tylko twoja propozycja pomogła mi. Dziękuję Ci !
Messou
9

Mam również ten sam problem, który wystąpi, jeśli twój mysql serverdomyślnie nie działa, ponownie zatrzyma się po kilku sekundach, więc ponownie uruchom $ sudo service mysql start komendę ( ), którą możesz zmienić, jeśli wiesz.

dla tego polecenia użycia

$ sudo service mysql start   

(w razie potrzeby wpisz hasło użytkownika, ponieważ korzystamy sudo), a następnie uruchom

$ sudo mysql -u root -p          (put user password if required )

teraz masz swoją bazę danych

Roko
źródło
7

Jeśli twoja instalacja była ostatnia, powinieneś potwierdzić, czy jest to SERWER instalacyjny ... jako mysql-server-5.5 .. Może zainstalowałeś tylko „mysql” .. to jest tylko klient zamiast serwera.

Leandro Souza
źródło
7

Jeśli masz XAMPP zainstalowany na komputerze z systemem Linux, spróbuj skopiować my.cnfplik z. /opt/lampp/etc/my.cnfDo/etc/my.cnf .

Następnie uruchom mysql -u rootponownie ... Powinieneś mieć teraz prawidłowe gniazdo i móc uruchomić klienta MySQL.

Toni Widiarto
źródło
7

Mam też ten problem, ale właśnie:

sudo service mysql restart 

To zadziałało dla mnie.

Kenny Ong
źródło
7

ZNALAZŁEM ROZWIĄZANIE

Przed uruchomieniem polecenia:mysql_secure_installation

  • Krok 1: sudo systemctl stop mariadb
  • Krok 2: sudo systemctl start mariadb
  • Krok 3: mysql_secure_installation

Następnie poprosi o hasło roota, a następnie wystarczy nacisnąć klawisz Enter i ustawić nowe hasło roota.

Sagar Mahajan
źródło
6

W moim przypadku domyślny port 3306 był używany przez jakiś inny proces i dlatego się nie uruchamiał. Po tym, jak przestałem korzystać z innych usług sudo service mysql start, zadziałało dobrze. BTW, możesz użyć czegoś takiego, sudo lsof -Pn -iTCP:3306aby zobaczyć, kto może korzystać z portu.

Bhaskar
źródło
6

W moim przypadku działało to poprzez wykonanie badań i rozwoju:

Jestem w stanie połączyć się z MySQL za pomocą

root-debian#mysql -h 127.0.0.1 -u root -p

Ale to nie działa mysql -u root -p.

Nie znalazłem żadnego bind-addressw moim.cnf . Wyceniłem więc parametr, socket=/var/lib/mysql/mysqld.sockw my.cnfktórym powodowałem problem z logowaniem.

Po ponownym uruchomieniu usługi poszło dobrze:

root@debian:~# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.6.19 MySQL Community Server (GPL)
Swapna Kumar
źródło
6

Rozwiązałem ten problem z restartem MySQL

/etc/init.d/mysql stop

i

/etc/init.d/mysql start

Otóż ​​to.

Jazuly
źródło
5

Z doświadczenia mówię, że musisz najpierw sprawdzić, czy serwer działa, a następnie spróbować skonfigurować MySQL. Ostatnim rozwiązaniem jest ponowna instalacja MySQL.

elmaazouz
źródło
5

Otwórz terminal i wpisz:

sudo apt-get purge mysql-client-core-5.6

sudo apt-get autoremove

sudo apt-get autoclean

sudo apt-get install mysql-client-core-5.5

sudo apt-get install mysql-server  

Zarówno klient podstawowy bazy danych MySQL, jak i pakiety MySQL Server będą miały tę samą wersję 5.5. MySQL Client 5.5 i MySQL Server 5.5 są aktualnymi „najlepszymi” wersjami tych pakietów w Ubuntu 14.04, zgodnie z ustaleniami opiekunów pakietów.

Jeśli wolisz zainstalować MySQL Client 5.6 i MySQL Server 5.6, możesz także znaleźć pakiety mysql-client-core-5.6 i mysql-server-5.6 w Centrum oprogramowania Ubuntu. Ważne jest, aby numery wersji klienta i serwera były zgodne w obu przypadkach.

To zadziałało dla mnie.

Akshay
źródło
5

Sprawdź, czy masz odpowiednie prawa:

sudo chmod 755 /var/lib/mysql/mysql

Miałem te same problemy i to działało dla mnie. Po wykonaniu tej czynności mogłem uruchomić MySQL.

użytkownik3599321
źródło
5

W moim przypadku wygląda na to, że nie byłam w stanie zabić procesu mysql, kiedy działam

sudo service mysql stop
ps -ef | grep mysql

Proces mysql zawsze tam był, wygląda na to, że blokował plik gniazda, a nowy proces mysql nie był w stanie go utworzyć.

więc to pomogło

cd /var/run
sudo cp mysqld/ mysqld.bc -rf
sudo chown mysql:mysql mysqld.bc/
sudo service mysql stop
sudo cp mysqld.bc/ mysqld -rf
sudo chown mysql:mysql mysqld -R
sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &

Teraz jestem w stanie zalogować się do bazy danych za pomocą

mysql -u root

Następnie, aby zaktualizować hasło roota:

UPDATE user SET authentication_string=password('YOURPASSWORDHERE') WHERE user='root';
FLUSH PRIVILEGES;

PS : Miałem problem z aktualizacją root roota, wygląda na problem z wtyczką „auth_socket”, więc musiałem utworzyć nowego użytkownika z pełnymi uprawnieniami

insert into user set `Host` = "localhost", `User` = "super", `plugin` = "mysql_native_password", `authentication_string` = NULL, `password_expired` = "N", `password_lifetime` = NULL, `account_locked` = "N", `Select_priv` = "Y",
`Insert_priv` = "Y", `Update_priv` = "Y", `Delete_priv` = "Y", `Create_priv` = "Y", `Drop_priv` = "Y", `Reload_priv` = "Y", `Shutdown_priv` = "Y", `Process_priv` = "Y", `File_priv` = "Y",
`Grant_priv` = "Y",  `References_priv` = "Y", `Index_priv` = "Y", `Alter_priv` = "Y", `Show_db_priv` = "Y", `Super_priv` = "Y", `Create_tmp_table_priv` = "Y", `Lock_tables_priv` = "Y",
`Execute_priv` = "Y", `Repl_slave_priv` = "Y",  `Repl_client_priv` = "Y",  `Create_view_priv` = "Y", `Show_view_priv` = "Y", `Create_routine_priv` = "Y", `Alter_routine_priv` = "Y",
`Create_user_priv` = "Y",  `Event_priv` = "Y", `Trigger_priv` = "Y", `Create_tablespace_priv` = "Y";

To tworzy użytkownika „super” bez hasła, a następnie można się połączyć mysql -u super

Buksy
źródło
dzięki za odpowiedź i mogłem zalogować się do mysql, ale w moich bazach danych nie ma tabeli użytkowników.
John Joe,
To rozwiązanie działa. Ale zanim wykonasz instrukcję sql w celu zmiany hasła użytkownika root, musisz wybrać bazę danych. Wykonaj następujące oświadczenie <br> use mysql;<br> i możesz teraz używać <br>UPDATE user SET authentication_string=password('YOURPASSWORDHERE') WHERE user='root'; FLUSH PRIVILEGES;
Charle K.
5

Na serwerze Debian Jessie moim działającym rozwiązaniem było po prostu

service mysql restart
service mysql reload

jako użytkownik root

Thomas Webber
źródło