Moje lokalne środowisko to:
- świeży Ubuntu 16.04
- z PHP 7
z zainstalowanym MySQL 5.7
sudo apt-get install mysql-common mysql-server
Kiedy próbowałem zalogować się do MySQL (przez CLI):
mysql -u root -p
Natknąłem się na cykliczny problem z 3 krokami.
1) Najpierw był problem z gniazdem
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
Rozwiązanie: ponowne uruchomienie komputera.
Co doprowadziło do kolejnego błędu:
2) W przypadku odmowy dostępu
ERROR 1698 (28000): Access denied for user 'root'@'localhost'.
Możliwy problem? Błędne hasło dla użytkownika „root”!
Rozwiązanie: zresetuj hasło roota za pomocą tego samouczka .
Przy poprawnym haśle i działającym gnieździe pojawia się ostatni błąd.
3) Nieprawidłowa wtyczka uwierzytelniająca
mysql "ERROR 1524 (HY000): Plugin 'unix_socket' is not loaded"
Tutaj zatrzymałem się lub jakoś dotarłem do 1) ponownie.
mysql
linux
ubuntu
auth-socket
Tomáš Votruba
źródło
źródło
Odpowiedzi:
Mam rozwiązanie!
Podczas resetowania hasła roota w kroku 2), zmień również wtyczkę autoryzacji na
mysql_native_password
:To pozwoliło mi się pomyślnie zalogować!
Pełne rozwiązanie kodu
1. uruchom polecenia bash
1. najpierw uruchom te polecenia bash
2. następnie uruchom polecenia mysql => skopiuj i wklej to ręcznie do cli
3. uruchom więcej poleceń basha
4. Problem z gniazdem (z twoich komentarzy)
Gdy zobaczysz błąd gniazda , społeczność zaproponowała 2 możliwe rozwiązania:
(dzięki @Cerin)
Lub
(dzięki @Peter Dvukhrechensky)
Ślepe ścieżki i możliwe błędy krawędzi
Użyj 127.0.0.1 zamiast localhost
Może prowadzić do „brakującego pliku” lub błędu slt.
Działa lepiej.
Pomiń problem z gniazdem
Znalazłem wiele sposobów tworzenia
mysqld.sock
pliku, zmiany praw dostępu lub dowiązania symbolicznego. W końcu to nie był problem.Pomiń
my.cnf
plikProblemu też tam nie było. Jeśli nie jesteś pewien, może ci to pomóc .
źródło
sudo mkdir -p /var/run/mysqld; sudo chown mysql /var/run/mysqld; sudo mysqld_safe --skip-grant-tables &
mkdir -p /var/run/mysqld && chown mysql:mysql /var/run/mysqld
To może zaoszczędzić komuś czasMożesz spróbować w następujący sposób, to działa dla mnie.
Uruchom serwer:
Teraz przejdź do folderu skarpet:
Utwórz kopię zapasową skarpety:
Zatrzymaj serwer:
Przywróć skarpetę:
Uruchom mysqld_safe:
Uruchom powłokę mysql:
Zmień hasło:
Dlatego najpierw wybierz bazę danych
Teraz wprowadź poniżej dwa zapytania:
Teraz wszystko będzie dobrze.
Do sprawdzenia:
Gotowe!
N.B, After login please change the password again from phpmyadmin
Teraz sprawdź
hostname/phpmyadmin
Username: root
Password: 123456
Aby uzyskać więcej informacji, zobacz Jak zresetować zapomniane hasło phpmyadmin w Ubuntu
źródło
mysql
Poleceń domyślnie używa gniazda UNIX, aby połączyć się z MySQL.Jeśli używasz MariaDB, musisz załadować wtyczkę Unix Socket Authentication Plugin po stronie serwera.
Możesz to zrobić edytując
[mysqld]
konfigurację w następujący sposób:W zależności od dystrybucji plik konfiguracyjny zwykle znajduje się pod adresem
/etc/mysql/
lub/usr/local/etc/mysql/
źródło
Możesz wypróbować następujące kroki:
Najpierw zatrzymaj usługę MySQL
sudo /etc/init.d/mysql stop
Zaloguj się jako root bez hasła
sudo mysqld_safe --skip-grant-tables &
Po zalogowaniu terminal mysql powinieneś potrzebować więcej poleceń:
Po ponownym uruchomieniu serwera mysql Jeśli nadal napotykasz błąd, odwiedź: Zresetuj hasło root MySQL 5.7 Ubuntu 16.04
źródło
W przypadku Ubuntu 18.04 i mysql 5.7
krok 1:
sudo mkdir /var/run/mysqld;
krok 2:
sudo chown mysql /var/run/mysqld
krok 3:
sudo mysqld_safe --skip-grant-tables
& quit (użyj quit, jeśli się zablokował)zaloguj się do mysql bez hasła
krok 4:
sudo mysql --user=root mysql
krok 5:
SELECT user,authentication_string,plugin,host FROM mysql.user;
krok 6:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root'
teraz zaloguj się z
mysql -u root -p <root>
źródło
$ mysql -u root -p
ale odmowa dostępu.Access denied for user 'root'@'localhost' (using password: YES)
Próbowałem wprowadzić hasło „TAK”Wypróbuj: sudo mysql_secure_installation
Praca w Ubuntu 18.04
źródło
Na wypadek, gdyby ktoś tu wylądował po popełnieniu tego samego błędu co ja:
plugin="mysql_native_password"
tymczasowo. Wykonał moje zadania.plugin="auth_socket"
co spowodowałomysql "ERROR 1524 (HY000): Plugin 'auth_socket' is not loaded"
mysql_safe
do ominięcia uwierzytelniania, aby przełączyć się na odpowiednią wtyczkęplugin="unix_socket"
Miejmy nadzieję, że zaoszczędzi to komuś trochę czasu, jeśli otrzyma komunikat o błędzie oryginalnego postera, ale prawdziwą przyczyną było niepoprawne imię wtyczki, a nie brak w rzeczywistości samej wtyczki „auth_socket”, która zgodnie z dokumentacją MariaDB :
źródło
Możesz spróbować za pomocą poniższych poleceń:
źródło