it-swarm.com.de

MySQL schlägt fehl: mysql "ERROR 1524 (HY000): Plugin 'auth_socket' ist nicht geladen"

Meine lokale Umgebung ist:

  • frisches Ubuntu 16.04
  • mit PHP 7
  • mit installiertem MySQL 5.7

    Sudo apt-get install mysql-common mysql-server
    

Wenn ich versuchte, sich über CLI bei MySQL anzumelden:

mysql -u root -p

Ich bin auf ein zyklisches Problem mit 3 Schritten gestoßen.

1) Zuerst gab es ein Problem mit der Steckdose

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

Lösung: Neustart des PCs.

Was zu einem anderen Fehler geführt hat:

2) Bei verweigertem Zugriff

ERROR 1698 (28000): Access denied for user 'root'@'localhost'.

Mögliches Problem? Falsches Passwort für "root" Benutzer!

Lösung: Root-Passwort mit diesem Tutorial zurücksetzen .

Bei korrektem Passwort und funktionierender Buchse kommt der letzte Fehler.

3) Falsches Auth-Plugin

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

Hier habe ich aufgehört oder bin irgendwie wieder zu 1) gekommen.

71
Tomáš Votruba

Ich habe eine Lösung!

Ändern Sie beim Zurücksetzen des root-Passworts in Schritt 2) auch das Auth-Plugin in mysql_native_password:.

use mysql;
update user set authentication_string=PASSWORD("") where User='root';
update user set plugin="mysql_native_password" where User='root';  # THIS LINE

flush privileges;
quit;

Dies erlaubte mir, mich erfolgreich anzumelden!


Vollständige Codelösung

1. Führen Sie die Bash-Befehle aus

1. Führen Sie zuerst diese Bash-Befehle aus

Sudo /etc/init.d/mysql stop # stop mysql service
Sudo mysqld_safe --skip-grant-tables & # start mysql without password
# enter -> go
mysql -uroot # connect to mysql

2. Führen Sie dann die mysql-Befehle aus => copy

use mysql; # use mysql table
update user set authentication_string=PASSWORD("") where User='root'; # update password to nothing
update user set plugin="mysql_native_password" where User='root'; # set password resolving to default mechanism for root user

flush privileges;
quit;

3. Weitere Bash-Befehle ausführen

Sudo /etc/init.d/mysql stop 
Sudo /etc/init.d/mysql start # reset mysql
# try login to database, just press enter at password Prompt because your password is now blank
mysql -u root -p 

4. Socket-Ausgabe (aus Ihren Kommentaren)

Wenn Sie einen socket -Fehler sehen, kam eine Community mit zwei möglichen Lösungen:

Sudo mkdir -p /var/run/mysqld; Sudo chown mysql /var/run/mysqld
Sudo mysqld_safe --skip-grant-tables &

(Danke an @Cerin)

Oder 

mkdir -p /var/run/mysqld && chown mysql:mysql /var/run/mysqld  

(Danke an @Peter Dvukhrechensky)


Blinde Pfade und mögliche Kantenfehler

Verwenden Sie 127.0.0.1 anstelle von localhost

mysql -uroot # "-hlocalhost" is default

Kann zu fehlender Datei oder zu einem slt-Fehler führen.

mysql -uroot -h127.0.0.1

Funktioniert besser.

Überspringen Sie das Socket-Problem

Ich habe viele Möglichkeiten gefunden, mysqld.sock-Dateien zu erstellen, Zugriffsrechte zu ändern oder sie zu verknüpfen. Es war doch nicht das Problem.

Überspringen Sie die my.cnf-Datei

Das Thema war auch nicht da. Wenn Sie sich nicht sicher sind, das könnte Ihnen helfen .

212
Tomáš Votruba

Du kannst es wie folgt versuchen, es funktioniert für mich.

Server starten:

Sudo service mysql start

Gehen Sie jetzt zum Sockenordner:

cd /var/run

Sichern Sie die Socke:

Sudo cp -rp ./mysqld ./mysqld.bak

Server stoppen:

Sudo service mysql stop

Stellen Sie die Socke wieder her:

Sudo mv ./mysqld.bak ./mysqld

Starten Sie mysqld_safe:

 Sudo mysqld_safe --skip-grant-tables --skip-networking &

Init mysql Shell:

 mysql -u root

Ändere das Passwort:

Wählen Sie daher zuerst die Datenbank

mysql> use mysql;

Geben Sie nun zwei Abfragen ein:

mysql> update user set authentication_string=password('123456') where user='root';
mysql> update user set plugin="mysql_native_password" where User='root'; 

Nun wird alles in Ordnung sein.

mysql> flush privileges;
mysql> quit;

Zur Überprüfung:

mysql -u root -p

erledigt!

N.B, After login please change the password again from phpmyadmin

Jetzt hostname/phpmyadmin prüfen

Username: root

Password: 123456

Weitere Informationen finden Sie unter So setzen Sie das vergessene Passwort phpmyadmin in Ubuntu zurück

13
Bablu Ahmed

Sie können diese Schritte ausprobieren:

Beenden Sie den MySQL-Dienst 1. Sudo /etc/init.d/mysql stop 

Melden Sie sich als root ohne Passwort an Sudo mysqld_safe --skip-grant-tables & 

Nach dem Login müsste mysql terminal mehr Befehle ausführen:

use mysql;

UPDATE mysql.user SET authentication_string=PASSWORD('[email protected]*^G'), plugin='mysql_native_password' WHERE User='root';

flush privileges;

Sudo mysqladmin -u root -p -S /var/run/mysqld/mysqld.sock shutdown

Nach dem Neustart des MySQL-Servers Wenn Sie immer noch einen Fehler haben, müssen Sie folgende Schritte ausführen: Setzen Sie das Root-Passwort für MySQL 5.7 zurück. Ubuntu 16.04

8
Inderpal Singh

Der Befehl mysql verwendet standardmäßig UNIX-Sockets, um eine Verbindung zu MySQL herzustellen.

Wenn Sie MariaDB verwenden, müssen Sie das Unix Socket-Authentifizierungs-Plugin auf dem Server laden.

Sie können dies tun, indem Sie die [mysqld]-Konfiguration folgendermaßen bearbeiten:

[mysqld]
plugin-load-add = auth_socket.so

Je nach Verteilung befindet sich die Konfigurationsdatei normalerweise unter /etc/mysql/ oder /usr/local/etc/mysql/.

3
rustyx

Für Ubuntu 18.04 und MySQL 5.7

  • schritt 1: Sudo mkdir/var/run/mysqld;

    schritt 2: Sudo chown mysql/var/run/mysqld

    schritt 3: Sudo mysqld_safe --skip-grant-tables & quit (Quit verwenden, wenn sein stecken bleibt)

melden Sie sich ohne Kennwort bei mysql an 

  • schritt 4: Sudo mysql --user = root mysql

    schritt 5: SELECT user, authentication_string, plugin, Host FROM mysql.user;

    schritt 6: ALTER USER 'root' @ 'localhost' IDENTIFIED WITH mysql_native_password BY 'root'

jetzt einloggen mit 

  • mysql -u root -p 
1
arunava maiti

Probieren Sie es aus: Sudo mysql_secure_installation

Arbeit in Ubuntu 18.04

0
Gorcer