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?
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
Hinweis: Für MAC OS
sie können die Verschlüsselung des Passworts wie folgt ändern.
ALTER USER 'yourusername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'youpassword';
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.
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 ).
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.
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.
Wenn Sie auf die Option "Neu konfigurieren" klicken, können Sie den Server neu konfigurieren. Klicken Sie auf "Weiter", bis Sie zu "Authentifizierungsmethode" gelangen.
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.
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
https://github.com/GitHub30/docs/blob/change-default_authentication_plugin/mysql/stack.yml
oder Sie sollten MySQL Workbench 8.0.11 verwenden.
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;
-Ö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.
Mit freundlicher Genehmigung: Häufig gestellte Fragen zu UDEMY vom Career365-Team beantwortet
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
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 |
+---+
Für Windows 1,
[mysqld] default_authentication_plugin = mysql_native_password
Starten Sie den MySQL-Dienst neu
melden Sie sich in der Befehlszeile bei MySQL an und führen Sie die folgenden Befehle in MySQL aus
Erstellen Sie einen neuen Benutzer
CREATE USER 'user' @ 'localhost' IDENTIFIED BY 'password';
ERTEILEN SIE ALLE PRIVILEGIEN FÜR *. * TO 'user' @ 'localhost';
Ich hatte das gleiche Problem und das hat funktioniert.
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'
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!)
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 .
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';
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.
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
Öffne meine SQL-Eingabeaufforderung:
geben Sie dann das MySQL-Passwort ein
endlich benutze:
ALTER USER 'username'@'ip_address' IDENTIFIED WITH mysql_native_password BY 'password';
siehe: https://stackoverflow.com/a/49228443/6097074
Vielen Dank.
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
Die folgende Lösung hat bei mir funktioniert
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
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:
Sudo apt-get update
Sudo apt-get install lsb-release -y
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.Sudo apt-get update
Sudo apt-get install mysql-client -y
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