Le plug-in d'authentification 'caching_sha2_password' ne peut pas être chargé

435

Je connecte MySQL - 8.0 avec MySQL Workbench et j'obtiens l'erreur ci-dessous:

Le plugin d'authentification 'caching_sha2_password' ne peut pas être chargé: dlopen (/usr/local/mysql/lib/plugin/caching_sha2_password.so, 2): image introuvable

J'ai également essayé avec un autre outil client.

Une solution pour ça?

Aman Aggarwal
la source
2
Vous pourrez peut-être résoudre ce problème si vous configurez MySQL 8.0 pour qu'il s'exécute en mode mysql_native_password.
Raymond Nijland
6
Correct, MySQL Workbench a besoin d'une mise à jour du connecteur pour pouvoir travailler avec les mots de passe sha2 mis en cache (bientôt disponible).
Mike Lischke
7
J'ai défini la connexion par défaut sur native et redémarré, le problème persiste et je ne peux pas me connecter pour créer un nouvel utilisateur. Surprenant qu'en 2018, une installation de Mysql et d'un établi ne soit pas épuisée. Contrôle de qualité médiocre.
ChrisR
1
Je ne sais pas d'où vous avez eu l'impression qu'il n'y aurait plus de bibliothèque client mysql 32 bits, mais ce n'est pas vrai. Ce qui est vrai, c'est que MySQL Workbench n'est plus livré avec une version 32 bits.
Mike Lischke
2
Ces réponses suggérant d'utiliser un cryptage plus faible ne sont pas la bonne façon. Utilisez d'autres clients comme tableplus .
ohkts11

Réponses:

279

Remarque: pour MAC OS

  1. Ouvrez MySQL à partir des Préférences Système> Initialiser la base de données>
  2. Tapez votre nouveau mot de passe.
  3. Choisissez «Utiliser l'ancien mot de passe»
  4. Redémarrez le serveur.
  5. Connectez maintenant le MySQL Workbench

description de l'image

Santhosh Sivan
la source
Cela a aidé sur OSX
Salam
2
Ce travail, merci. Je pense que cela fonctionne parce que MySQL Workbench utilise un cryptage de mot de passe hérité pour se connecter au serveur de base de données. Peut également être effectué lors de l'installation de MySQL et du choix du cryptage hérité, au lieu du cryptage Strong Password recommandé.
monkSinha
1
Le mysql de certaines versions a un panneau de réglage différent et cela ne peut pas fonctionner
Michael Yang
8
La publicité pour revenir à une authentification ancienne et moins sécurisée n'est pas du tout une bonne solution.
Mike Lischke
63
Je n'ai pas MySQL dans les Préférences Système
JavaRunner
249

vous pouvez changer le cryptage du mot de passe comme ceci.

ALTER USER 'yourusername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'youpassword';
double
la source
33
Que se passe-t-il si OP veut utiliser une toute nouvelle méthode d'authentification cool?
LibertyPaul
@twocold, belle requête de script. + 1
Md Haidar Ali Khan
Notez que votre nom d'utilisateur et votre mot de passe doivent être placés entre guillemets simples, comme indiqué dans le code par @twocold.
matrice
@twocold Comment "annuler" l'ALTER USER ci-dessus pour revenir au standard MySQL 8.0 (nouveau niveau de cryptage) une fois que vous avez fait cela et que cela ne fonctionne pas?
Will Belden
1
@BrianFitzGerald c'est "caching_sha2_password", lien ici ou ici .
Yan Karin
114

Pour Windows 10:

Ouvrez l'invite de commande:

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

Vous pouvez également modifier la configuration my.ini comme suit:

[mysqld]

default_authentication_plugin=mysql_native_password

Redémarrez le serveur MySQL et ouvrez à nouveau le Workbench.

Araz Ghazaryan
la source
1
Changer my.ini ne fonctionnerait pas pour moi - mais le changement d'invite de commande l'a fait.
amelvin
Changer my.ini est résolu mon problème. Merci.
berkant
my.iniemplacement du fichier: stackoverflow.com/a/20311286/923560
Abdull
Je veux juste noter que la configuration doit être effectuée sur le serveur que vous souhaitez connecter, et ALTER USER a travaillé pour moi pour me connecter de Windows à un serveur mysql distant
Alcides
Non limité à Windows 10
Geza Turi
76

Vous pouvez modifier le cryptage du mot de passe de l'utilisateur en modifiant l'utilisateur avec la commande Alter ci-dessous:

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

OU

Nous pouvons éviter cette erreur en le faisant fonctionner avec l'ancien plugin de mot de passe:

Modifiez d' abord le plugin d'authentification dans le fichier my.cnf pour le fichier Linux / my.ini sous Windows :

[mysqld]

default_authentication_plugin = mysql_native_password

Redémarrez le serveur mysql pour prendre les modifications en vigueur et essayez de vous connecter via MySQL avec n'importe quel client mysql.

Si vous ne parvenez toujours pas à vous connecter et obtenez l'erreur ci-dessous:

Unable to load plugin 'caching_sha2_password'

Cela signifie que votre utilisateur a besoin du plugin ci-dessus. Essayez donc de créer un nouvel utilisateur avec la commande create user ou grant après avoir changé le plugin par défaut. alors le nouvel utilisateur a besoin du plugin natif et vous pourrez connecter MySQL.

Merci

Aman Aggarwal
la source
5
Ce n'est
certainement
1
C'est. Le problème est que les logiciels de gestion de base de données ne le gèrent pas encore. Donc, sauf si vous êtes un développeur d'atelier mysql, c'est votre solution de contournement pour l'instant.
Kevin Gagnon
A travaillé pour moi. Merci
Lucas Araújo
La partie sur la création d'un nouvel utilisateur après l'ajout de l'indicateur de configuration est cruciale.
2018 nippon
70

Actuellement (le 23/04/2018), vous devez télécharger une version de développement . Les GA ne fonctionnent pas.

Je n'ai pas pu me connecter avec la dernière version GA (6.3.10).

Il a fonctionné avec mysql-workbench-community-8.0.11-rc-winx64.msi(à partir de https://dev.mysql.com/downloads/workbench/ , onglet Versions de développement ).

Monte Carlo
la source
4
C'est en fait la bonne réponse: MySQL 8.0 nécessite MySQL Workbench 8.0, qui semble malheureusement toujours en mode bêta. Mais une fois installé, vous pouvez vous en tenir au nouveau cryptage du mot de passe SHA, pas besoin de changer quoi que ce soit.
Cristi S.
Pas une version bêta mais une version candidate (RC). La version GA (généralement disponible) arrive bientôt.
Mike Lischke
La meilleure idée pour moi.
Wojciech Fornal
2
C'est toujours le cas. L'installation de la version GA entraîne toujours une incapacité à se connecter en utilisant le cryptage de mot de passe recommandé. Il n'y a aucun avertissement que la version GA ne fonctionne qu'avec l'authentification héritée.
Donald Rich
2
Au moins sous MacOS, la version GA est actuellement 8.0.12 (2018/08/13) et résout le problème! Merci!
Bruno Silvano
63

J'ai eu le même problème, mais la réponse d'Aman Aggarwal n'a pas fonctionné pour moi avec un conteneur Docker exécutant mysql 8.X. Je me suis connecté dans le container

docker exec -it CONTAINER_ID bash

puis connectez-vous à mysql en tant que root

mysql --user=root --password

Entrez le mot de passe pour root (par défaut est 'root') Enfin exécutez:

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

Vous êtes prêt.

axelferreira
la source
Il semble que cela pourrait être une bonne réponse pour ce que je recherche. Mais je ne sais pas ce que c'est. voulez-vous dire la réponse acceptée? ou un autre ...
Zach Smith
1
Oui @ZachSmith, "ceci" fait référence au répondeur accepté.
axelferreira
Que diriez-vous docker exec -it CONTAINER_ID mysql --user=root --passwordau lieu de deux commandes qui reposent sur la présence du bashshell (ce qui n'est pas certain à l'avenir)?
Eric
Cela n'a pas fonctionné avec sequelpro 1.1.2 en utilisant docker desktop 2.0.3.0 (mac). les commandes fonctionnent toutes, mais les erreurs de la suite pro à la connexion - en utilisant mysql: latest (v8.0.15)
arcseldon
Comme d'autres l'ont signalé, l'utilisation de mysql 5.7 fonctionne sans rien de nécessaire:docker run -p 3306:3306 --name mysql1 -e MYSQL_ROOT_PASSWORD=secret -d mysql:5.7
arcseldon
47

Ok, j'ai perdu beaucoup de temps à ce sujet alors voici un résumé au 19 mars 2019

Si vous essayez spécifiquement d'utiliser une image Docker avec MySql 8+ , puis utilisez SequelPro pour accéder à vos bases de données fonctionnant sur ce conteneur Docker , vous n'avez pas de chance.

Voir le numéro sequelpro 2699

Ma configuration est sequelpro 1.1.2 en utilisant docker desktop 2.0.3.0 (mac - mojave), et j'ai essayé d'utiliser mysql: latest (v8.0.15).

Comme d'autres l'ont signalé, l'utilisation de mysql 5.7 fonctionne sans rien de nécessaire:

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

Bien sûr, il est possible d'utiliser MySql 8+ sur docker, et dans cette situation (si nécessaire), d'autres réponses fournies ici pour caching_sha2_passwordles problèmes de type fonctionnent. Mais sequelpro est un NO GO avec MySql 8+

Enfin, j'ai abandonné sequelpro (un ami de confiance de retour en 2013-2014) et j'ai plutôt installé DBeaver . Tout a fonctionné hors de la boîte. Pour docker, j'ai utilisé:

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

Vous pouvez rapidement consulter les bases de données mysql en utilisant:

docker exec -it mysql1 bash

mysql -u root -p

show databases;
arcseldon
la source
1
Merci beaucoup d'avoir partagé cela. J'essayais exactement le même combo après avoir accidentellement supprimé mon conteneur de développement MySQL.
martn_st
1
Très triste que Sequel Pro ne se développe plus activement :( Dernières nouvelles datées du 3 avril 2016, alors que nous sommes déjà en 2019. C'était le meilleur outil que j'ai vu pour l'explorateur MySQL.
Oleksii Shnyra
@OleksiiShnyra vrai il n'y a pas eu de version de production depuis quelques années, mais pour info, de nouvelles versions "nocturnes" sont disponibles. sequelpro.com/test-builds et via brew cask install homebrew/cask-versions/sequel-pro-nightly.
Peter W
Il existe une solution de contournement qui peut faire fonctionner SequelPro, pour ceux qui peuvent se connecter via la ligne de commande ( mysqlclient) et ALTERleur table myslq.user, notée ici: github.com/sequelpro/sequelpro/issues/…
Peter W
Si vous êtes sur MySQL 8 et que vous ne souhaitez pas passer à une version antérieure mysql_native_password, vous pouvez suivre ceci: stackoverflow.com/a/56402217/2321594
Aidin
46

J'installais MySQL sur mon PC Windows 10 à l'aide de " MySQL Web Installer " et faisais face au même problème lorsque j'essayais de me connecter à l'aide de MySQL Workbench. J'ai résolu le problème en reconfigurant le serveur depuis la fenêtre du programme d'installation.

MySQL Web Installer - Écran d'accueil

En cliquant sur l'option "Reconfigurer" cela permettra de reconfigurer le serveur. Cliquez sur "Suivant" jusqu'à atteindre "Méthode d'authentification".

Programme d'installation de MySQL - Méthode d'authentification

Une fois sur cet onglet, utilisez la deuxième option "Utiliser la méthode d'authentification héritée (conserver la compatibilité MySQL 5.x)".

Gardez tout le reste tel quel et c'est ainsi que j'ai résolu mon problème.

ImtiazeA
la source
1
Je décompresse manuellement mysql-8.0.11-winx64.zip et ne peux pas facilement résoudre le problème "caching_sha2_password ne peut pas être chargé". Cependant, en utilisant mysql-installer-community-8.0.11.0.msi et je suis la recommandation ci-dessus, MySQL Workbench 8.0.11 peut se connecter au serveur MySQL 8.0.11.
oraclesoon
21
  • Ouvrez le client de ligne de commande MySQL

  • Créer un nouvel utilisateur avec un nouveau pass

Considérant un exemple de chemin d'accès à un dossier bin en haut, voici le code que vous devez exécuter dans l'invite de commandes, ligne par ligne:

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';
  • Ensuite, vous pouvez à nouveau accéder à Workbench (vous devriez pouvoir le faire après avoir créé une nouvelle connexion localhost et utilisé les nouvelles informations d'identification pour commencer à utiliser le programme).

Configurez une nouvelle connexion hôte locale avec le nom d'utilisateur mentionné ci-dessus (utilisateur natif), connectez-vous en utilisant le mot de passe (new_password)

Image

Courtoisie: FAQ UDEMY répondue par l'équipe Career365

Ahmed Ziyad
la source
Cela a fonctionné. Pourquoi? J'ai eu cette erreur en essayant de me connecter rootet sans mot de passe, ce qui fonctionnait dans la ligne de commande, mais pas dans Sequel Pro.
Volte
fonctionne comme par magie, corrélation complète avec la question Thread Start et veuillez noter: votre must have Mac os Catalina, docker 19.03, dernières images mysql, exection cette commande $ docker run -p 3306: 3306 -d --name mysql -e MYSQL_ROOT_PASSWORD = mot de passe mysql / mysql-server du site Web dzone.
banzai
13

Pour ceux qui utilisent Docker ou Docker Compose, j'ai rencontré cette erreur car je n'ai pas défini ma version d'image MySQL. Docker tentera automatiquement d'obtenir la dernière version qui est la 8.

J'ai mis MySQL à 5.7 et reconstruit l'image et cela a fonctionné normalement:

version: '2'
services: 
  db:
   image: mysql:5.7
Dylan Pierce
la source
3
Il y a des raisons valables d'utiliser la version 8 au lieu de la version 5. Je suis sur cette page parce que je veux utiliser la version 8 au lieu de la version 5
Zach Smith
2
utiliser mysql:5.7au lieu de mysql:latestrésoudre le problème pour moi
Francesco Borzi
13

Voici ma définition de base de données dans mon 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"

La ligne pertinente est le point d' entrée .

Après l'avoir construit et monté, vous pouvez le tester avec:

$ 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 |
+---+
Maximiliano de Mattos
la source
11

Pour Windows 10 ,

  1. Modifier le my.inifichier dansC:\ProgramData\MySQL\MySQL Server 8.0\

    [mysqld]
    default_authentication_plugin=mysql_native_password
  2. Redémarrez le service MySQL.

  3. Connectez-vous à MySQL sur la ligne de commande et exécutez les commandes suivantes dans MySQL:

    • Créez un nouvel utilisateur.

      CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
    • Accordez tous les privilèges.

      GRANT ALL PRIVILEGES ON * .* TO 'user'@'localhost';
  4. Ouvrez le plan de travail MySQL et ouvrez une nouvelle connexion à l'aide des nouvelles informations d'identification de l'utilisateur.

J'étais confronté au même problème et cela a fonctionné.

Preetham
la source
9

Voici la solution qui a fonctionné pour moi après l'installation de MySQL 8.0 sur Windows 10.

Supposons que le nom d'utilisateur MySQL est rootet le mot de passe estadmin

Ouvrez l'invite de commande et entrez les commandes suivantes:

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

mysql_upgrade -uroot -padmin

mysql -uroot -padmin

ALTER USER 'root' @ 'localhost' IDENTIFIED WITH mysql_native_password BY 'admin'

Pratik Patil
la source
8

Si vous obtenez cette erreur sur GitLab CI comme moi: passez simplement de la dernière à la version 5.7;)

# .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!)
Bruno Casali
la source
7

Je l'ai trouvé

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

n'a pas fonctionné par lui-même. Je devais également définir

[mysqld]
    default_authentication_plugin=mysql_native_password

dans /etc/mysql/mysql.conf.d/mysqld.cnf sur Ubuntu 18.04 exécutant PHP 7.0

Darrell Duane
la source
Cela a fonctionné pour moi sur Centos 7. Pour une raison quelconque, mes mots de passe ont été enregistrés en tant que caching_sha2_password par défaut et j'obtenais l'erreur # 1251 lorsque j'essayais de me connecter avec phpMyAdmin.
DaFudgeWizzad
6

Cette erreur apparaît lorsque l'outil utilisé n'est pas compatible avec MySQL8, essayez de mettre à jour vers la dernière version de MySQL Workbench pour MySQL8

Shammoo
la source
5

Presque comme les réponses ci-dessus, mais peut-être dans des requêtes simples, j'obtenais cette erreur dans mon application Spring Boot avec hibernate après la mise à niveau de MySQL. Nous avons créé un nouvel utilisateur en exécutant les requêtes ci-dessous sur notre base de données. Je crois que c'est un travail temporaire pour utiliser sha256_password au lieu de la dernière et bonne authentification caching_sha2_password.

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

GRANT ALL PRIVILEGES ON * .* TO 'username'@'localhost';
Vikky
la source
4

MySQLWorkbench 8.0.11 pour macOS résout ce problème. Je peux établir une connexion avec l'instance mysql protégée par mot de passe root exécutée dans docker.

Benjamin Lin
la source
C'est ce qui m'a arrangé. J'exécutais un ancien MySQL Workbench 6.3 avec un serveur 8.0. Alors que de nombreuses réponses ici disent de rétrograder la compatibilité du serveur, j'ai simplement mis à niveau ma version Workbench vers la dernière version 8.0 (actuellement 8.0.15).
Sum None
4

Bien que cela ne devrait pas être une vraie solution, cela fonctionne localement si vous êtes coincé

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';
elad silver
la source
1
Cela résout le problème.
KTA
2

La solution ci-dessous a fonctionné pour moi entrez la description de l'image ici

Allez dans Mysql Workbench -> Server-> Users and Privileges 1.Cliquez sur Add Account

Sous l'onglet de connexion, fournissez de nouveaux détails et assurez-vous de choisir le type d'authentification en tant que standard et choisissez les rôles administratifs et les privilèges de schéma respectifs.

entrez la description de l'image ici

Deepak rkm
la source
2

Si vous essayez de vous connecter à un serveur MySQL à partir d'un client MySQL basé sur du texte à partir d'un autre ordinateur (que ce soit Docker ou non)

La plupart des réponses ici impliquent la connexion à partir d'un client de bureau ou vous demandent de passer à une ancienne méthode d'authentification. Si vous le connectez avec le client MySQL (basé sur du texte), je l'ai fait fonctionner avec un Debian Buster dans un conteneur Docker.

Supposons que vous ayez le système apt et wget configurés, procédez comme suit:

  1. sudo apt-get update
  2. sudo apt-get install lsb-release -y
  3. Téléchargez un paquet Debian qui met à jour les sources apt pour vous depuis le site Web MySQL .
  4. sudo dpkg -i mysql-apt-config_0.8.13-1_all.debet sélectionnez les options souhaitées. Dans mon cas, je dois seulement MySQL Tools & Connectorsêtre activé.
  5. sudo apt-get update
  6. sudo apt-get install mysql-client -y
  7. Terminé. Vous pouvez maintenant exécuter le nouveau client MySQL et vous connecter avec la nouvelle méthode d'authentification.
huggie
la source
C'était la bonne réponse pour les problèmes WSL, merci!
Andrew Landsverk
1

Essayez d'utiliser un mot de passe hérité pendant le téléchargement et l'installation de MySql, cela m'a aidé. Ou suivez la méthode publiée par Santhosh Shivan pour Mac OS.

Anupriya Krishnamoorthy
la source
0

Le téléchargement d'une version de développement de 8.0.11-rc a fonctionné pour moi sur un Mac. avec les commandes docker suivantes:

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

J'ai résolu ce problème en installant MySQL 5.7:

Étape 1 - Activer le référentiel MySQL

Tout d'abord, vous devez activer le référentiel yum de la version MySQL 5.7 sur votre système. Les packages rpm pour la configuration du référentiel yum sont disponibles sur le site officiel de MySQL. Utilisez l'une des commandes ci-dessous selon la version de votre système d'exploitation.

Sur CentOS et RHEL 7

yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

Sur CentOS et RHEL 6

yum localinstall https://dev.mysql.com/get/mysql57-community-release-el6-9.noarch.rpm

Sur Fedora 27

dnf install https://dev.mysql.com/get/mysql57-community-release-fc27-9.noarch.rpm

Sur Fedora 26

dnf install https://dev.mysql.com/get/mysql57-community-release-fc26-9.noarch.rpm

Sur Fedora 25

dnf install https://dev.mysql.com/get/mysql57-community-release-fc25-9.noarch.rpm

Étape 2 - Installer le serveur MySQL 5.7

Comme vous avez correctement activé le référentiel yum MySQL sur votre système. Maintenant, installez le serveur de communauté MySQL 5.7 en utilisant les commandes suivantes selon la version de votre système d'exploitation.

Sur CentOS et RHEL 7/6

yum install mysql-community-server

Le Fedora 27/26/25

 dnf install mysql-community-server

source: https://tecadmin.net/install-mysql-5-7-centos-rhel/

Laloi
la source
-5

Revenir aux installations précédentes (vers MySQL Community Server 5.7 et Workbench 6.1) et configurer de nouvelles informations d'identification MySQL a fonctionné pour moi!

nickitalyano
la source