Ubuntu 15.10 mysql error 1524 - unix_socket

51

Unter Ubuntu 15.10 konnte mysql zu einem bestimmten Zeitpunkt (möglicherweise nach der Installation und Deinstallation von mariadb) nicht mehr ausgeführt werden. Die Aufgaben sind aktiv, aber der Server ist inaktiv.

Auf Befehl:

mysql -u root -p

Das System antwortet mit wie folgt:

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

Keine Möglichkeit, sich anzumelden, kein Plugin gefunden, keine Fehler in Konfigurationsdateien (alle auf Standard).

Wie kann ich die Kontrolle wiedererlangen und den MySQL-Server zum Laufen bringen?

Hydra Starmaster
quelle
Ich bin mit diesem Fehler nicht vertraut, sehe aber folgende Diskussion: lists.launchpad.net/maria-developers/msg08177.html
Jos
@Jos: Diese Diskussion, vielleicht für eine ähnliche Situation, bietet keine Lösung. Ich habe viel gegoogelt, aber ich habe keine vollständige Lösung gefunden. Wie auch immer, ich habe eine funktionierende Antwort gepostet.
Hydra Starmaster
Informationen zum Grund für die Fehlermeldung: Das Plug-in unix_socket ist Teil von MariaDB (nicht von MySQL) und muss geladen werden, damit Stipendien verwendet werden können: mariadb.com/kb/en/library/authentication-plugin-unix-socket
JonnyJD

Antworten:

94

Der "unix_socket" wurde durch den MySQL-Authentifizierungsprozess aufgerufen (möglicherweise im Zusammenhang mit einer teilweisen Migration der Datenbank nach Mariadb, die jetzt entfernt wurde). Um alles wieder zum Laufen zu bringen, gehe su:

sudo su

dann folge:

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

Dadurch wird mysql vollständig gestoppt, die Benutzerauthentifizierung umgangen (kein Kennwort erforderlich) und eine Verbindung zu mysql mit dem Benutzer "root" hergestellt.

Verwenden Sie jetzt in der MySQL-Konsole die MySQL-Verwaltungsdatenbank:

use mysql;

So setzen Sie das root-Passwort auf mein neues Passwort zurück (ändern Sie es nach Ihren Wünschen):

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

Und diese überschreibt die Authentifizierungsmethode, entfernt die unix_socket-Anforderung (und alles andere) und stellt eine normale und funktionierende Kennwortmethode wieder her:

update user set plugin="mysql_native_password";

Beenden Sie die MySQL-Konsole:

quit;

Stoppen und starten Sie alles, was mit MySQL zu tun hat:

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

Vergiss nicht exitden su-Modus.

Jetzt läuft der mySQL Server. Sie können sich mit root anmelden:

mysql -u root -p

oder was auch immer Sie wünschen. Die Passwortverwendung ist wirksam.

Das ist es.

Hydra Starmaster
quelle
Meine mysqld_safehat keine Option wie --skip-grant-tables..was gibt es?
heemayl
Ich bin auf mysqld 5.6.27-0ubuntu1. mysqld --verbose --help
Diese
2
Das hat mich zum Laufen gebracht. Mit einigen Unterschieden, anstatt mysqld_safedie das Argument --skip-grant-tables zu beanstanden, existierte ich nicht mysqld. Es klagte jedoch immer wieder, dass es die Socket-Dateien in nicht erstellen könne /var/run/mysqld/. Ich habe die Apparmor-Konfiguration überprüft und sie hatte die richtigen Berechtigungen. Um dies zu beheben ich hatte mkdir /var/run/mysqld/und dann gibt sie völlig offen Berechtigungen: chmod -R 777 /var/run/mysqld/. Dann konnte ich endlich den Daemon starten und das Plugin auf 'mysql_native_password' ändern.
Dennmat
1
Meine Benutzertabelle hat kein Passwortfeld (Ubuntu 16 mysql 5.7.13). Ich habe diese SQL verwendet: UPDATE mysql.user SET authentication_string = PASSWORD ('foobar123'), password_expired = 'N' WHERE User = 'root' AND Host = 'localhost';
Anthony Scaife
Die Anleitung hier ist kurz und hat mir geholfen, das Problem zu beheben. Danke!
Eduardo B.
11

Hier sind meine Schritte dazu:

/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
quelle
1
Jetzt nach "mysql -u root" bekomme ich: FEHLER 1524 (HY000): Plugin 'root' ist nicht geladen
dxvargas
Es hört sich so an, als hätten Sie die beiden UPDATE-Abfragen vertauscht. Hast du bei einem Unfall plugin = "root" gesetzt?
Adam Plocher