Błąd mysql Ubuntu 15.10 1524 - unix_socket

51

Na Ubuntu 15.10, w pewnym momencie (być może po instalacji i usunięciu mariadb) mysql nie był w stanie działać. Zadania są w górę, ale serwer nie działa.

Na polecenie:

mysql -u root -p

odpowiedź systemu brzmi:

mysql "ERROR 1524 (HY000): Plugin 'unix_socket' is not loaded"

Nie można się zalogować, nie znaleziono wtyczki, żadnych błędów w plikach konfiguracyjnych (wszystkie domyślnie).

Jak odzyskać kontrolę i uruchomić serwer mysql?

Hydra Starmaster
źródło
Nie znam tego konkretnego błędu, ale widzę tę dyskusję: lists.launchpad.net/maria-developers/msg08177.html
Jos
@Jos: ta dyskusja, być może w podobnej sytuacji, nie oferuje rozwiązania. Często googlowałem, ale nie znalazłem pełnego rozwiązania. W każdym razie opublikowałem działającą odpowiedź.
Hydra Starmaster
Informacje o przyczynie komunikatu o błędzie: Wtyczka unix_socket jest częścią MariaDB (nie MySQL) i musi zostać załadowana, aby granty mogły z niej korzystać: mariadb.com/kb/en/library/authentication-plugin-unix-socket
JonnyJD

Odpowiedzi:

94

„Unix_socket” został wywołany przez proces uwierzytelniania mysql (być może związany z częściową migracją bazy danych do mariadb, teraz usunięty). Aby przywrócić wszystkie rzeczy do pracy, przejdź do su:

sudo su

następnie wykonaj:

/etc/init.d/mysql stop
mysqld_safe --skip-grant-tables &
mysql -uroot

Spowoduje to całkowite zatrzymanie mysql, ominięcie uwierzytelnienia użytkownika (bez hasła) i połączenie się z mysql z użytkownikiem „root”.

Teraz w konsoli mysql przejdź do administracyjnej bazy danych mysql:

use mysql;

Aby zresetować hasło roota do mojego nowego hasła (zmień je według własnego uznania), po prostu upewnij się:

update user set password=PASSWORD("mynewpassword") where User='root';

A ten zastąpi metodę uwierzytelniania, usunie żądanie unix_socket (i wszystko inne), przywracając normalną i działającą metodę hasła:

update user set plugin="mysql_native_password";

Wyjdź z konsoli mysql:

quit;

Zatrzymaj i uruchom wszystko związane z mysql:

/etc/init.d/mysql stop
kill -9 $(pgrep mysql)
/etc/init.d/mysql start

Nie zapomnij o exittrybie su.

Teraz serwer mySQL jest uruchomiony. Możesz się zalogować za pomocą roota:

mysql -u root -p

lub cokolwiek chcesz. Używanie hasła działa.

Otóż ​​to.

Hydra Starmaster
źródło
Moja mysqld_safenie ma opcji jak… --skip-grant-tablesco daje?
heemayl
Jestem na mysqld 5.6.27-0ubuntu1. Powinieneś znaleźć tę opcję, patrząc na:mysqld --verbose --help
Hydra Starmaster
2
To mnie uruchomiło. Z pewnymi różnicami zamiast mysqld_safenarzekać na argument --skip-grant-tables nie istniałem, którego użyłem mysqld. Jednak ciągle narzekał, że nie może utworzyć plików gniazd /var/run/mysqld/. Sprawdziłem konfigurację apparmor i miała ona odpowiednie uprawnienia. W tym celu musiałem naprawić mkdir /var/run/mysqld/, a następnie dać całkowicie otwarte uprawnienia: chmod -R 777 /var/run/mysqld/. Następnie mógłbym w końcu uruchomić demona i zmienić wtyczkę na „mysql_native_password”.
dennmat
1
Moja tabela użytkowników nie ma pola hasła (Ubuntu 16 mysql 5.7.13). Użyłem tego kodu SQL: AKTUALIZACJA mysql.user SET Uwierzytelnianie ciąg = HASŁO („foobar123”), hasło_wyrażone = „N” GDZIE Użytkownik = „root” ORAZ Host = „localhost”;
Anthony Scaife,
Niniejsza instrukcja jest zwięzła i pomogła mi rozwiązać problem. Dziękuję Ci!
Eduardo B.,
11

Oto moje kroki, aby to zrobić:

/etc/init.d/mysql stop
sudo killall mysqld_safe
sudo killall mysqld
sudo mysqld_safe --skip-grant-tables &
mysql -u root
use mysql;
update user set password=PASSWORD("mynewpassword") where User='root';
update user set plugin="mysql_native_password";
quit;
/etc/init.d/mysql stop
sudo kill -9 $(pgrep mysql)
/etc/init.d/mysql start
Roy Yan
źródło
1
Teraz po „mysql -u root” dostaję: ERROR 1524 (HY000): Wtyczka „root” nie jest ładowana
dxvargas
Wygląda na to, że pomieszałeś dwa zapytania UPDATE. Czy ustawiłeś plugin = "root" na wypadek?
Adam Plocher