web-dev-qa-db-fra.com

Le plugin d'authentification 'caching_sha2_password' ne peut pas être chargé

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

Le plug-in 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 aussi essayé avec un autre outil client.

Une solution pour ça?

331
Aman Aggarwal

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

ALTER USER 'nom d'utilisateur' @ @ 'ip_address' IDENTIFIÉ AVEC mysql_native_password BY 'mot de passe';

OU

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

Commencez par changer le plug-in d'authentification dans fichier my.cnf pour Linux/my.ini dans Windows:

[mysqld]

default_authentication_plugin = mysql_native_password

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

Si vous n'arrivez 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 modifié le plugin par défaut. alors le nouvel utilisateur a besoin du plugin natif et vous pourrez vous connecter à MySQL.

Merci

76
Aman Aggarwal

Remarque: pour MAC OS

  1. Ouvrez MySQL depuis 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

Image description

213
Santhosh Sivan

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

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

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.

78
Araz Ghazaryan

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

Je ne pouvais pas me connecter avec la dernière version de GA (6.3.10).

Cela a fonctionné avec mysql-workbench-community-8.0.11-rc-winx64.msi (de https://dev.mysql.com/downloads/workbench/ , onglet Communiqués de développement ).

69
Montecarlo

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

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 (la valeur par défaut est 'root') Enfin, exécutez:

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

Vous êtes tous ensemble.

47
axelferreira

J'installais MySQL sur mon PC Windows 10 à l'aide de " MySQL Web Installer " et je rencontrais le 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 à partir de la fenêtre du programme d'installation.

MySQL Web Installer - Home Screen

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

MySQL Installer - Authentication Method

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 comme ça que j'ai résolu mon problème.

42
ImtiazeA

comme ça?

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

Essayez dans PWD

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

ou Vous devez utiliser MySQL Workbench 8.0.11.

31
井上智文

Ok, j'ai perdu beaucoup de temps, alors voici un résumé du 19 mars 2019

Si vous essayez spécifiquement d’utiliser une image Docker avec MySql 8 + , puis d’utiliser SequelPro pour accéder à votre base de données s'exécutant sur ce conteneur de menu fixe, vous n'avez pas de chance.

Voir le numéro de sequelpro 2699

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

Comme d'autres l'ont déjà signalé, l'utilisation de mysql 5.7 ne nécessite rien:

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

Bien entendu, il est possible d’utiliser MySql 8+ sur le menu fixe, et dans cette situation (si nécessaire), les autres réponses fournies ici pour les problèmes de type caching_sha2_password fonctionnent. Mais sequelpro est un NO GO avec MySql 8+

Finalement, j'ai abandonné sequelpro (un ami de confiance de retour en 2013-2014) pour installer plutôt 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;
26
arcseldon

-Open MySQL Command Line Client

-Créer un nouvel utilisateur avec un nouveau laissez-passer

Considérant un exemple de chemin d'accès à un dossier bin en haut, voici le code que vous devez exécuter dans la commande Invite, 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 accéder à nouveau à 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 à l'hôte local avec le nom d'utilisateur mentionné ci-dessus (utilisateur natif), connectez-vous à l'aide du mot de passe (new_password).

Image

Courtesy: UDEMY FAQ répond par l'équipe Career365

17
Ahmed Ziyad

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

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

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

Voici ma définition de base de données dans mon menu fixe:

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 à cet endroit est entrypoint.

Après l'avoir construit et mis en place, 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 |
+---+
11

Pour Windows 1,

  1. Modifier le fichier my.ini dans ** C:\ProgramData\MySQL\MySQL Server 8.0 **

[mysqld] default_authentication_plugin = mysql_native_password

  1. Redémarrez le service MySQL

  2. connectez-vous à MySQL en ligne de commande, exécutez les commandes suivantes dans MySQL

  3. Créer un nouvel utilisateur

CREATE USER 'utilisateur' @ '' localhost 'IDENTIFIÉ PAR' mot de passe ';

  1. Accorder tous les privilèges

Accordez tous les privilèges sur *. * À 'utilisateur' @ 'localhost';

  1. Ouvrez MySQL Workbench, ouvrez une nouvelle connexion en utilisant les nouvelles informations d'identification de l'utilisateur.

Je faisais face au même problème et cela a fonctionné.

10
Preetham

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

Supposons que le nom d'utilisateur MySQL soit root et le mot de passe est admin

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

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

mysql_upgrade -uroot -padmin

mysql -uroot -padmin

ALTER USER 'root' @ 'localhost' IDENTIFIÉ AVEC mysql_native_password BY 'admin'

7
Pratik Patil

Si vous obtenez cette erreur sur GitLab CI comme moi, il suffit de passer de la version la plus récente à 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!)
7
Bruno Casali

Pour moi, cela a commencé parce que sur un projet, j’utilisais Docker image mysql: latest (qui était la version 5 et qui fonctionnait bien), et lors d’une version ultérieure, la dernière version a été passée à la version 8, et a cessé de travailler . Je a changé mon image en mysql: 5 et j'étais (ne reçois plus cette erreur .

6
alberto56

Presque comme les réponses ci-dessus mais peut-être dans des requêtes simples, je recevais cette erreur dans mon application de démarrage de printemps avec hibernation 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 pense que c'est un moyen temporaire d'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';
5
Vikky

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 s'exécutant dans docker.

4
Benjamin Lin

Cette erreur survient lorsque l'outil utilisé n'est pas compatible avec MySQL8. Essayez de mettre à jour votre logiciel vers la dernière version de MySQL Workbench for MySQL8.

3
Shammoo

Ouvrez ma commande SQL promt:

step 1

puis entrez le mot de passe mysql

step 2

enfin utiliser:

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

se référer: https://stackoverflow.com/a/49228443/6097074

Merci.

3
ankit

Je l'ai trouvé

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

n'a pas fonctionné par lui-même. J'avais aussi besoin de mettre

[mysqld]
    default_authentication_plugin=mysql_native_password

dans /etc/mysql/mysql.conf.d/mysqld.cnf sous Ubuntu 18.04 sous PHP 7.0

2
Darrell Duane

La solution ci-dessous a fonctionné pour moi enter image description here

Allez dans Mysql Workbench -> Serveur-> Utilisateurs et privilèges 1.Cliquez sur Ajouter un compte.

2.Under Login Onglet fournit de nouveaux détails et veillez à choisir le type d'authentification comme standard et à choisir les rôles administratifs et les privilèges de schéma respectifs.

enter image description here

1
Deepak rkm

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

La plupart des réponses ici concernent la connexion à partir d'un client de bureau ou vous demandent de passer à une méthode d'authentification plus ancienne. Si vous le connectez au client MySQL (en mode texte), je l’ai fait fonctionner avec un bus Debian dans un conteneur Docker.

Supposons que vous avez le système apt et que vous êtes configuré, 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 pour vous les sources apt depuis le site Web MySQL .
  4. Sudo dpkg -i mysql-apt-config_0.8.13-1_all.deb et sélectionnez les options souhaitées. Dans mon cas, je n'ai besoin que de MySQL Tools & Connectors pour ê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.
0
huggie

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 suivantes de docker:

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