it-swarm.com.de

Das Authentifizierungs-Plugin 'caching_sha2_password' kann nicht geladen werden

Ich verbinde MySQL - 8.0 mit MySQL Workbench und erhalte den folgenden Fehler:

Authentifizierungs-Plugin 'caching_sha2_password' kann nicht geladen werden: dlopen (/usr/local/mysql/lib/plugin/caching_sha2_password.so, 2): Bild nicht gefunden

Ich habe es auch mit einem anderen Client-Tool versucht.

Irgendeine Lösung dafür?

331
Aman Aggarwal

Sie können die Verschlüsselung des Benutzerpassworts ändern, indem Sie den Benutzer mit dem folgenden Befehl "Ändern" ändern:

ALTER USER 'username' @ 'ip_address' IDENTIFIED WITH mysql_native_password BY 'password';

ODER

Wir können diesen Fehler vermeiden, indem wir dafür sorgen, dass es mit dem alten Passwort-Plugin funktioniert:

Ändern Sie zuerst das Authentifizierungs-Plugin in my.cnf-Datei für Linux/my.ini-Datei in Windows:

[mysqld]

default_authentication_plugin = mysql_native_password

Starten Sie den MySQL-Server neu, um die Änderungen zu übernehmen, und versuchen Sie, eine Verbindung über MySQL mit einem beliebigen MySQL-Client herzustellen.

Wenn immer noch keine Verbindung hergestellt werden kann und die folgende Fehlermeldung angezeigt wird:

Unable to load plugin 'caching_sha2_password'

Dies bedeutet, dass Ihr Benutzer das oben genannte Plugin benötigt. Versuchen Sie also, einen neuen Benutzer mit dem Befehl create user oder grant zu erstellen, nachdem Sie das Standard-Plugin geändert haben. Dann benötigen neue Benutzer das native Plugin und Sie können MySQL verbinden.

Vielen Dank

76
Aman Aggarwal

Hinweis: Für MAC OS

  1. Öffnen Sie MySQL in den Systemeinstellungen> Datenbank initialisieren>
  2. Geben Sie Ihr neues Passwort ein.
  3. Wählen Sie "Legacy-Passwort verwenden".
  4. Starten Sie den Server erneut.
  5. Verbinden Sie nun die MySQL Workbench

Image description

213
Santhosh Sivan

sie können die Verschlüsselung des Passworts wie folgt ändern.

ALTER USER 'yourusername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'youpassword';
149
twocold

Für Windows 10: Öffnen Sie die Eingabeaufforderung

cd "C:\Program Files\MySQL\MySQL Server 8.0\bin"

C:\Program Files\MySQL\MySQL Server 8.0\bin> mysql -u root -p
Enter password: *********

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newrootpassword';
Query OK, 0 rows affected (0.10 sec)

mysql> exit

Alternativ können Sie die Konfiguration my.ini wie folgt ändern:

[mysqld]

default_authentication_plugin = mysql_native_password

Starten Sie den MySQL Server neu und öffnen Sie die Workbench erneut.

78
Araz Ghazaryan

Derzeit (am 23.04.2018) müssen Sie eine Entwicklungsversion herunterladen. Die GA funktionieren nicht.

Ich konnte keine Verbindung mit der neuesten GA Version (6.3.10) herstellen.

Es funktionierte mit mysql-workbench-community-8.0.11-rc-winx64.msi (von https://dev.mysql.com/downloads/workbench/ , tab Entwicklungsversionen ).

69
Montecarlo

Ich hatte das gleiche Problem, aber die Antwort von Aman Aggarwal funktionierte bei mir nicht mit einem Docker-Container, auf dem MySQL 8.X ausgeführt wird. Ich habe mich im Container eingeloggt

docker exec -it CONTAINER_ID bash

dann melden Sie sich bei MySQL als root an

mysql --user=root --password

Geben Sie das Passwort für root ein (Standard ist 'root'). Führen Sie schließlich Folgendes aus:

ALTER USER 'username' IDENTIFIED WITH mysql_native_password BY 'password';

Sie sind fertig.

47
axelferreira

Ich habe MySQL mit " MySQL Web Installer " auf meinem Windows 10-PC installiert und hatte das gleiche Problem beim Versuch, eine Verbindung über die MySQL-Workbench herzustellen. Ich habe das Problem behoben, indem ich den Server im Installationsfenster neu konfiguriert habe.

MySQL Web Installer - Home Screen

Wenn Sie auf die Option "Neu konfigurieren" klicken, können Sie den Server neu konfigurieren. Klicken Sie auf "Weiter", bis Sie zu "Authentifizierungsmethode" gelangen.

MySQL Installer - Authentication Method

Verwenden Sie auf dieser Registerkarte die zweite Option "Legacy-Authentifizierungsmethode verwenden (MySQL 5.x-Kompatibilität beibehalten)".

Behalte alles wie es ist und so habe ich mein Problem gelöst.

42
ImtiazeA

so was?

docker run -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -d mysql --default-authentication-plugin=mysql_native_password
mysql -uroot --protocol tcp

Versuch in PWD

https://github.com/GitHub30/docs/blob/change-default_authentication_plugin/mysql/stack.yml

oder Sie sollten MySQL Workbench 8.0.11 verwenden.

31
井上智文

Ok, viel Zeit damit verschwendet, also hier eine Zusammenfassung vom 19. März 2019

Wenn Sie speziell versuchen, ein Docker-Image mit MySql 8 + zu verwenden, verwenden Sie SequelPro Um auf Ihre Datenbank (en) zuzugreifen, die in diesem Docker-Container ausgeführt werden, haben Sie Pech.

Siehe das sequelpro Ausgabe 2699

Mein Setup ist sequelpro 1.1.2 mit Docker Desktop 2.0.3.0 (Mac - Mojave) und ich habe versucht, mysql: latest (v8.0.15) zu verwenden.

Wie andere berichtet haben, funktioniert die Verwendung von MySQL 5.7 mit nichts Erforderlichem:

docker run -p 3306:3306 --name mysql1 -e MYSQL_ROOT_PASSWORD=secret -d mysql:5.7

Natürlich ist es möglich, MySql 8+ im Docker zu verwenden, und in dieser Situation (falls erforderlich) funktionieren andere Antworten, die hier für Probleme vom Typ caching_sha2_password bereitgestellt werden. Aber sequelpro ist mit MySql 8+ ein NO GO

Schließlich habe ich sequelpro (ein vertrauenswürdiger Freund von 2013-2014) verlassen und stattdessen DBeaver installiert. Alles hat sofort geklappt. Für Docker verwendete ich:

docker run -p 3306:3306 --name mysql1 -e MYSQL_ROOT_PASSWORD=secret -d mysql:latest --default-authentication-plugin=mysql_native_password

Sie können schnell einen Blick auf die MySQL-Datenbanken werfen:

docker exec -it mysql1 bash

mysql -u root -p

show databases;
26
arcseldon

-Öffnen Sie den MySQL Command Line Client

-Erstelle einen neuen Benutzer mit einem neuen Pass

Angenommen, ein Beispiel für einen Pfad zu einem Bin-Ordner oben ist der Code, den Sie im Befehl Eingabeaufforderung Zeile für Zeile ausführen müssen:

cd C:\Program Files\MySQL\MySQL Server 5.7\bin
MySQL -u root -p    
current password...***  
CREATE USER 'nativeuser'@'localhost'  
IDENTIFIED WITH mysql_native_password BY 'new_password';

-Dann können Sie erneut auf Workbench zugreifen (dies sollte möglich sein, nachdem Sie eine neue localhost-Verbindung erstellt und die neuen Anmeldeinformationen verwendet haben, um das Programm zu starten).

Richten Sie eine neue lokale Host-Verbindung mit dem oben genannten Benutzernamen (systemeigener Benutzer) ein und melden Sie sich mit dem Kennwort (new_password) an.

Image

Mit freundlicher Genehmigung: Häufig gestellte Fragen zu UDEMY vom Career365-Team beantwortet

17
Ahmed Ziyad

Bei Benutzern von Docker oder Docker Compose ist dieser Fehler aufgetreten, weil ich meine MySQL-Image-Version nicht festgelegt habe. Docker versucht automatisch, die neueste Version (8) abzurufen.

Ich habe MySQL auf 5.7 gesetzt und das Image neu erstellt und es hat wie gewohnt funktioniert:

version: '2'
services: 
  db:
   image: mysql:5.7
12
Dylan Pierce

Dies ist meine Datenbankdefinition in meinem Docker-Compose:

dataBase:
    image: mysql:8.0
    volumes:
        - db_data:/var/lib/mysql
    networks:
        z-net:
            ipv4_address: 172.26.0.2
    restart: always
    entrypoint: ['docker-entrypoint.sh', '--default-authentication-plugin=mysql_native_password']
    environment:
        MYSQL_ROOT_PASSWORD: supersecret
        MYSQL_DATABASE: zdb
        MYSQL_USER: zuser
        MYSQL_PASSWORD: zpass
    ports:
        - "3333:3306"

Die relevante Zeile dort ist Eintrittspunkt.

Nachdem Sie es erstellt und aufgebaut haben, können Sie es testen mit:

$ mysql -u zuser -pzpass --Host=172.26.0.2  zdb -e "select 1;"
Warning: Using a password on the command line interface can be insecure.
+---+
| 1 |
+---+
| 1 |
+---+
11

Für Windows 1,

  1. Ändern Sie my.ini Datei in ** C:\ProgramData\MySQL\MySQL Server 8.0 **

[mysqld] default_authentication_plugin = mysql_native_password

  1. Starten Sie den MySQL-Dienst neu

  2. melden Sie sich in der Befehlszeile bei MySQL an und führen Sie die folgenden Befehle in MySQL aus

  3. Erstellen Sie einen neuen Benutzer

CREATE USER 'user' @ 'localhost' IDENTIFIED BY 'password';

  1. Gewähren Sie alle Privilegien

ERTEILEN SIE ALLE PRIVILEGIEN FÜR *. * TO 'user' @ 'localhost';

  1. Öffnen Sie die MySQL-Workbench, und öffnen Sie eine neue Verbindung mit den neuen Benutzeranmeldeinformationen

Ich hatte das gleiche Problem und das hat funktioniert.

10
Preetham

Hier ist die Lösung, die nach der Installation von MySQL 8.0 unter Windows 10 für mich funktioniert hat.

Angenommen, der MySQL-Benutzername ist root und das Kennwort ist admin

Öffnen Sie die Eingabeaufforderung und geben Sie die folgenden Befehle ein:

cd C:\Programme\MySQL\MySQL Server 8.0\bin

mysql_upgrade -uroot -padmin

mysql -uroot -padmin

ALTER USER 'root' @ 'localhost' IDENTIFIZIERT MIT mysql_native_password BY 'admin'

7
Pratik Patil

Wenn Sie diesen Fehler auf GitLab CI wie ich bekommen: Wechseln Sie einfach von der neuesten auf die 5.7-Version;)

# .gitlab-ci.yml

rspec:
  services:
    # - mysql:latest (I'm using latest version and it causes error)
    - mysql:5.7 #(then I've changed to this specific version and fix!)
7
Bruno Casali

Für mich passierte dies, weil ich in einem Projekt das Docker-Image mysql: latest (welches Version 5 war und gut funktionierte) verwendete und während eines späteren Builds die neueste Version auf Version 8 umgestellt wurde, nd aufgehört zu arbeiten . Ich habe mein Bild in mysql: 5 geändert und ich habe diesen Fehler nicht mehr erhalten .

6
alberto56

Fast wie die obigen Antworten, aber möglicherweise in einfachen Abfragen, wurde dieser Fehler in meiner Spring-Boot-Anwendung zusammen mit dem Ruhezustand nach dem MySQL-Upgrade angezeigt. Wir haben einen neuen Benutzer erstellt, indem wir die folgenden Abfragen für unsere Datenbank ausgeführt haben. Ich glaube, dies ist eine vorübergehende Lösung, um sha256_password anstelle der neuesten und guten Authentifizierung caching_sha2_password zu verwenden.

CREATE USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'pa$$Word';

GRANT ALL PRIVILEGES ON * .* TO 'username'@'localhost';
5
Vikky

MySQL Workbench 8.0.11 für Mac behebt dies. Ich kann eine Verbindung mit der durch Root-Passwort geschützten MySQL-Instanz herstellen, die im Docker ausgeführt wird.

4
Benjamin Lin

Dieser Fehler tritt auf, wenn das verwendete Tool nicht mit MySQL8 kompatibel ist. Versuchen Sie, auf die neueste Version von MySQL Workbench für MySQL8 zu aktualisieren

3
Shammoo

Öffne meine SQL-Eingabeaufforderung:

step 1

geben Sie dann das MySQL-Passwort ein

step 2

endlich benutze:

ALTER USER 'username'@'ip_address' IDENTIFIED WITH mysql_native_password BY 'password';

siehe: https://stackoverflow.com/a/49228443/6097074

Vielen Dank.

3
ankit

Ich habe das gefunden

ALTER USER 'username'@'ip_address' IDENTIFIED WITH mysql_native_password BY 'password';

hat von selbst nicht funktioniert. Ich musste auch einstellen

[mysqld]
    default_authentication_plugin=mysql_native_password

in /etc/mysql/mysql.conf.d/mysqld.cnf unter Ubuntu 18.04 mit PHP 7.0

2
Darrell Duane

Die folgende Lösung hat bei mir funktioniert enter image description here

Gehen Sie zu MySQL Workbench -> Server -> Benutzer und Berechtigungen 1.Klicken Sie auf Konto hinzufügen

2. Geben Sie auf der Registerkarte "Anmeldung" neue Details ein und stellen Sie sicher, dass Sie den Authentifizierungstyp als Standard und die entsprechenden Administratorrollen und Schemaberechtigungen auswählen

enter image description here

1
Deepak rkm

Wenn Sie versuchen, von einem textbasierten MySQL-Client von einem anderen Computer aus eine Verbindung zu einem MySQL-Server herzustellen (Docker oder nicht)

Bei den meisten Antworten wird eine Verbindung von einem Desktop-Client hergestellt oder Sie werden aufgefordert, zu einer älteren Authentifizierungsmethode zu wechseln. Wenn Sie es mit dem MySQL-Client (textbasiert) verbinden, habe ich dafür gesorgt, dass es mit einem Debian-Buster in einem Docker-Container funktioniert.

Angenommen, Sie haben das apt-System und werden eingerichtet. Gehen Sie wie folgt vor:

  1. Sudo apt-get update
  2. Sudo apt-get install lsb-release -y
  3. Laden Sie ein Debian-Paket herunter, das die passenden Quellen für Sie von der MySQL-Website aktualisiert.
  4. Sudo dpkg -i mysql-apt-config_0.8.13-1_all.deb und wählen Sie die gewünschten Optionen. In meinem Fall muss nur MySQL Tools & Connectors aktiviert sein.
  5. Sudo apt-get update
  6. Sudo apt-get install mysql-client -y
  7. Getan. Sie können jetzt den neuen MySQL-Client ausführen und eine Verbindung mit der neuen Authentifizierungsmethode herstellen.
0
huggie

Das Herunterladen einer Entwicklungsversion von 8.0.11-rc funktionierte für mich auf einem Mac. mit den folgenden Docker-Befehlen:

docker run --name mysql -p 3406:3306 -e MYSQL_ROOT_PASSWORD=mypassword -d mysql
0
Daniel Adigun