Impossibile caricare il plug-in di autenticazione 'caching_sha2_password'


435

Sto collegando MySQL - 8.0 con MySQL Workbench e ricevo l'errore di seguito:

Impossibile caricare il plug-in di autenticazione 'caching_sha2_password': dlopen (/usr/local/mysql/lib/plugin/caching_sha2_password.so, 2): immagine non trovata

Ho provato anche con altri strumenti client.

Qualche soluzione per questo?


2
Potrebbe essere possibile risolvere questo problema se si configura MySQL 8.0 per l'esecuzione in modalità mysql_native_password.
Raymond Nijland,

6
Corretto, MySQL Workbench necessita di un aggiornamento del connettore per poter lavorare con password sha2 memorizzate nella cache (presto in arrivo).
Mike Lischke,

7
Ho impostato l'accesso predefinito su nativo e riavviato, il problema persiste e non riesco ad accedere per creare un nuovo utente. Sorprendente che nel 2018 un'installazione Mysql e workbench non finiscano la scatola. Controllo di qualità scadente.
ChrisR

1
Non so da dove hai avuto l'impressione che non ci sarebbe più una libreria client mysql a 32 bit, ma non è vero. Ciò che è vero è che MySQL Workbench non viene più fornito con una versione a 32 bit.
Mike Lischke,

2
Quelle risposte che suggeriscono di usare una crittografia più debole non sono il modo giusto. Usa altri client come tableplus .
ohkts11

Risposte:


279

Nota: per MAC OS

  1. Apri MySQL da Preferenze di Sistema> Inizializza database>
  2. Digita la tua nuova password.
  3. Scegli "Usa password legacy"
  4. Riavvia il server.
  5. Ora collega MySQL Workbench

descrizione dell'immagine


Questo ha aiutato OSX
Salam,

2
Questo lavoro, grazie. Penso che funzioni perché MySQL workbench utilizza la crittografia delle password legacy per connettersi al server DB. Può essere eseguito anche durante l'installazione di MySQL e la scelta della crittografia Legacy, anziché della crittografia Strong password consigliata.
monacoSinha,

1
Il mysql di alcune versioni ha un pannello di impostazioni diverso e questo non può funzionare
Michael Yang,

8
La pubblicità per tornare all'autenticazione precedente e meno sicura non è affatto una buona soluzione.
Mike Lischke,

63
Non ho MySQL in Preferenze di Sistema
JavaRunner il

248

puoi modificare la crittografia della password in questo modo.

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

33
E se OP volesse utilizzare il nuovissimo metodo di autenticazione cool?
LibertyPaul

@twocold, bella query di script. + 1
Haidar Ali Khan,

Nota che il tuo nome utente e la tua password devono essere racchiusi tra virgolette singole come mostrato nel codice da @twocold.
matrice

@twocold Come si "annulla" ALTER USER sopra allo standard MySQL 8.0 (nuovo livello di crittografia) dopo averlo fatto e non funziona?
Will Belden,

1
@BrianFitzGerald è "caching_sha2_password", link qui o qui .
Yan Karin,

114

Per Windows 10:

Apri il prompt dei comandi:

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

In alternativa, è possibile modificare la configurazione my.ini come segue:

[mysqld]

default_authentication_plugin=mysql_native_password

Riavvia il server MySQL e apri di nuovo Workbench.


1
Cambiare my.ini non avrebbe funzionato per me, ma la modifica del prompt dei comandi ha funzionato.
amelvin,

Cambiare my.ini è risolto il mio problema. Grazie.
Berkant

my.iniposizione del file: stackoverflow.com/a/20311286/923560
Abdull

Voglio solo notare che la configurazione deve essere eseguita nel server che si desidera connettere e ALTER USER ha lavorato per me per connettermi da Windows a un server mysql remoto
Alcides

Non limitato a Windows 10
Geza Turi,

76

È possibile modificare la crittografia della password dell'utente modificando l'utente con il comando Modifica seguente:

ALTER USER 'username' @ 'ip_address' IDENTIFICATO CON mysql_native_password DA 'password';

O

Possiamo evitare questo errore facendolo funzionare con il vecchio plugin password:

Innanzitutto modifica il plug-in di autenticazione nel file my.cnf per il file Linux / my.ini in Windows :

[Mysqld]

default_authentication_plugin = mysql_native_password

Riavvia il server mysql per rendere effettive le modifiche e prova a connetterti via MySQL con qualsiasi client mysql.

Se ancora impossibile connettersi e ottenere l'errore seguente:

Unable to load plugin 'caching_sha2_password'

Significa che il tuo utente ha bisogno del plugin sopra. Quindi prova a creare un nuovo utente con crea utente o concedi il comando dopo aver modificato il plug-in predefinito. quindi i nuovi utenti hanno bisogno del plug-in nativo e sarai in grado di connettere MySQL.

Grazie


5
Sicuramente non è una soluzione al problema con plug-in mancante.
LibertyPaul

1
È. Il problema è che i software di gestione DB non lo gestiscono ancora. Quindi, a meno che tu non sia un sviluppatore mysql workbench, questa è la tua soluzione per ora.
Kevin Gagnon,

Ha funzionato per me. Grazie
Lucas Araújo,

La parte sulla creazione di un nuovo utente dopo l'aggiunta del flag di configurazione è cruciale.
nipponese,

70

Attualmente (il 23/04/2018), è necessario scaricare una versione di sviluppo . I GA quelli non funzionano.

Non sono stato in grado di connettermi con l'ultima versione di GA (6.3.10).

Ha funzionato con mysql-workbench-community-8.0.11-rc-winx64.msi(da https://dev.mysql.com/downloads/workbench/ , scheda Release di sviluppo ).


4
Questa è in effetti la risposta giusta: MySQL 8.0 richiede MySQL Workbench 8.0, che purtroppo sembra ancora in modalità beta. Ma una volta installato, è possibile attenersi alla nuova crittografia della password SHA, non è necessario modificare nulla.
Cristi S.

Non una beta ma una candidata al rilascio (RC). La versione GA (generalmente disponibile) è in arrivo.
Mike Lischke,

La migliore idea per me.
Wojciech Fornal,

2
Questo è ancora il caso. L'installazione della versione GA comporta comunque l'impossibilità di accedere utilizzando la crittografia della password consigliata. Non viene segnalato che la versione GA funziona solo con l'autenticazione legacy.
Donald Rich,

2
Almeno in MacOS, la versione GA è attualmente 8.0.12 (2018/08/13) e risolve il problema! Grazie!
Bruno Silvano,

63

Ho avuto lo stesso problema, ma la risposta di Aman Aggarwal non ha funzionato per me con un contenitore Docker con mysql 8.X. Ho effettuato l'accesso nel contenitore

docker exec -it CONTAINER_ID bash

quindi accedere a mysql come root

mysql --user=root --password

Immettere la password per root (l'impostazione predefinita è 'root') Infine eseguire:

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

Sei pronto.


Sembra che potrebbe essere una buona risposta per quello che sto cercando. Ma non so cosa sia "questo". intendi la risposta accettata? o un altro ...
Zach Smith,

1
Sì @ZachSmith, "questo" si riferisce al risponditore accettato.
axelferreira,

Che ne dici docker exec -it CONTAINER_ID mysql --user=root --passwordinvece di due comandi che si basano sulla presenza della bashshell (che non è certo in futuro)?
Eric,

Questo non ha funzionato con sequelpro 1.1.2 usando docker desktop 2.0.3.0 (mac). i comandi funzionano tutti, ma sequel pro errori all'accesso - usando mysql: latest (v8.0.15)
arcseldon

Come altri hanno riferito, l'uso di mysql 5.7 funziona senza nulla di necessario:docker run -p 3306:3306 --name mysql1 -e MYSQL_ROOT_PASSWORD=secret -d mysql:5.7
arcseldon

47

Ok, ho perso molto tempo su questo, quindi ecco un riassunto al 19 marzo 2019

Se stai specificamente cercando di utilizzare un'immagine Docker con MySql 8+ e quindi utilizzare SequelPro per accedere ai tuoi database in esecuzione su quel contenitore docker, sei sfortunato.

Vedi il numero 2699 di sequelpro

La mia installazione è sequelpro 1.1.2 usando docker desktop 2.0.3.0 (mac - mojave) e ho provato ad usare mysql: latest (v8.0.15).

Come altri hanno riferito, l'uso di mysql 5.7 funziona senza nulla di necessario:

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

Naturalmente, è possibile utilizzare MySql 8+ sulla finestra mobile e, in tale situazione (se necessario), altre risposte fornite qui per caching_sha2_passwordproblemi di tipo funzionano. Ma sequelpro è un NO GO con MySql 8+

Infine, ho abbandonato sequelpro (un amico fidato dal 2013-2014) e ho invece installato DBeaver . Tutto ha funzionato fuori dalla scatola. Per la finestra mobile, ho usato:

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

Puoi dare una rapida occhiata ai database mysql usando:

docker exec -it mysql1 bash

mysql -u root -p

show databases;

1
Grazie mille per averlo condiviso. Stavo provando la stessa combo dopo aver cancellato accidentalmente il mio contenitore di sviluppo MySQL.
martn_st

1
Molto triste che Sequel Pro non si sviluppi più attivamente :( Ultime notizie datate 3 aprile 2016, mentre è già il 2019. Era il miglior strumento che ho visto per MySQL Explorer.
Oleksii Shnyra

@OleksiiShnyra è vero che non esiste una versione di produzione da alcuni anni, ma FYI, sono disponibili versioni "notturne" più recenti. sequelpro.com/test-builds e via brew cask install homebrew/cask-versions/sequel-pro-nightly.
Peter W,

C'è una soluzione alternativa che può far funzionare SequelPro, per coloro che sono in grado di accedere tramite la riga di comando ( mysqlclient) e la ALTERloro tabella myslq.user, annotati qui: github.com/sequelpro/sequelpro/issues/…
Peter W

Se sei su MySQL 8 e non desideri effettuare il downgrade mysql_native_password, puoi seguire questo: stackoverflow.com/a/56402217/2321594
Aidin

46

Stavo installando MySQL sul mio PC Windows 10 usando " MySQL Web Installer " e stavo affrontando lo stesso problema mentre cercavo di connettermi usando MySQL workbench. Ho risolto il problema riconfigurando il server dalla finestra del programma di installazione.

MySQL Web Installer - Schermata principale

Facendo clic sull'opzione "Riconfigura" consentirà di riconfigurare il server. Fai clic su "Avanti" fino a raggiungere "Metodo di autenticazione".

MySQL Installer - Metodo di autenticazione

Una volta su questa scheda, usa la seconda opzione "Usa il metodo di autenticazione legacy (mantieni la compatibilità con MySQL 5.x)".

Mantieni tutto il resto com'è ed è così che ho risolto il mio problema.


1
Decomprendo manualmente mysql-8.0.11-winx64.zip e non riesco a risolvere facilmente il problema "caching_sha2_password non può essere caricato". Tuttavia, utilizzando mysql-installer-community-8.0.11.0.msi e seguo le raccomandazioni sopra riportate, MySQL Workbench 8.0.11 può accedere al server MySQL 8.0.11.
oraclesoon,


21
  • Apri MySQL Command Line Client

  • Crea un nuovo utente con un nuovo pass

Considerando un esempio di un percorso verso una cartella bin in alto, ecco il codice che devi eseguire nel prompt dei comandi, riga per riga:

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';
  • Quindi, puoi accedere nuovamente a Workbench (dovresti essere in grado di farlo dopo aver creato una nuova connessione localhost e aver utilizzato le nuove credenziali per iniziare a utilizzare il programma).

Configurare una nuova connessione host locale con il nome utente menzionato sopra (utente nativo), accedere utilizzando la password (new_password)

Immagine

Per gentile concessione: Domande frequenti su UDEMY fornite dal team Career365


Questo ha funzionato. Perché? Ho riscontrato questo errore durante il tentativo di connessione con roote senza password, che ha funzionato nella riga di comando, ma non in Sequel Pro.
Volte,

funziona come per incanto, completa corelazione con la discussione Inizia la domanda e tieni presente: devi avere Mac os Catalina, docker 19.03, mysql ultime immagini, exection questo comando $ docker run -p 3306: 3306 -d --name mysql -e MYSQL_ROOT_PASSWORD = password mysql / mysql-server dal sito Web di dzone.
banzai,

13

Per coloro che utilizzano Docker o Docker Compose, ho riscontrato questo errore perché non ho impostato la versione della mia immagine MySQL. Docker tenterà automaticamente di ottenere l'ultima versione 8.

Ho impostato MySQL su 5.7 e ricostruito l'immagine e ha funzionato normalmente:

version: '2'
services: 
  db:
   image: mysql:5.7

3
Ci sono validi motivi per usare la versione 8 invece della versione 5. Sono su questa pagina perché voglio usare la versione 8 anziché la versione 5
Zach Smith

2
usando mysql:5.7invece di aver mysql:latestrisolto il problema per me
Francesco Borzi,

13

Questa è la mia definizione di databdase nel mio 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 linea pertinente è entrypoint .

Dopo averlo compilato e installato, puoi provarlo con:

$ 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

Per Windows 10 ,

  1. Modifica il my.inifile inC:\ProgramData\MySQL\MySQL Server 8.0\

    [mysqld]
    default_authentication_plugin=mysql_native_password
  2. Riavvia il servizio MySQL.

  3. Accedi a MySQL dalla riga di comando ed esegui i seguenti comandi in MySQL:

    • Crea un nuovo utente.

      CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
    • Concedi tutti i privilegi.

      GRANT ALL PRIVILEGES ON * .* TO 'user'@'localhost';
  4. Apri MySQL workbench e apri una nuova connessione utilizzando le nuove credenziali utente.

Stavo affrontando lo stesso problema e questo ha funzionato.


9

Ecco la soluzione che ha funzionato per me dopo l'installazione di MySQL 8.0 su Windows 10.

Supponiamo che il nome utente MySQL sia roote la password siaadmin

Apri il prompt dei comandi e inserisci i seguenti comandi:

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

mysql_upgrade -uroot -padmin

mysql -uroot -padmin

ALTER USER 'root' @ 'localhost' IDENTIFICATO CON mysql_native_password DA 'admin'


8

Se ricevi questo errore su GitLab CI come me: passa dall'ultima alla versione 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

l'ho trovato

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

non ha funzionato da solo. Ho anche dovuto impostare

[mysqld]
    default_authentication_plugin=mysql_native_password

in /etc/mysql/mysql.conf.d/mysqld.cnf su Ubuntu 18.04 con PHP 7.0


Questo ha funzionato per me su Centos 7. Per qualche ragione, le mie password sono state salvate come caching_sha2_password per impostazione predefinita e stavo ricevendo l'errore # 1251 quando ho provato ad accedere con phpMyAdmin.
DaFudgeWizzad,



6

Questo errore si presenta quando lo strumento utilizzato non è compatibile con MySQL8, prova ad aggiornare all'ultima versione di MySQL Workbench per MySQL8


5

Quasi come le risposte sopra ma potrebbe essere in semplici query, stavo ottenendo questo errore nella mia applicazione di avvio a molla insieme all'ibernazione dopo l'aggiornamento di MySQL. Abbiamo creato un nuovo utente eseguendo le query seguenti sul nostro DB. Credo che questa sia una soluzione temporanea per usare sha256_password invece della più recente e buona autenticazione caching_sha2_password.

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

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

4

MySQLWorkbench 8.0.11 per macOS risolve questo problema. Posso stabilire una connessione con l'istanza mysql protetta da password di root in esecuzione nella finestra mobile.


Questo è ciò che l'ha risolto per me. Stavo eseguendo un vecchio MySQL Workbench 6.3 con un server 8.0. Mentre molte risposte qui dicono di eseguire il downgrade della compatibilità del server, ho semplicemente aggiornato la mia versione di Workbench all'ultima versione 8.0 (attualmente 8.0.15).
Somma nessuno

4

Anche se questa non dovrebbe essere una soluzione reale , funziona localmente se sei bloccato

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

1
Questo risolve il problema.
kta,

2

La soluzione di seguito ha funzionato per me inserisci qui la descrizione dell'immagine

Vai a Mysql Workbench -> Server-> Utenti e privilegi 1.Fare clic su Aggiungi account

2.La scheda Accesso fornisce nuovi dettagli e assicurarsi di scegliere il tipo di autenticazione come standard e scegliere i rispettivi ruoli amministrativi e privilegi dello schema

inserisci qui la descrizione dell'immagine


2

Se si sta tentando di connettersi a un server MySQL da un client MySQL basato su testo da un altro computer (sia Docker o meno)

La maggior parte delle risposte qui implica la connessione da un client desktop o ti chiede di passare a un metodo di autenticazione precedente. Se lo stai collegando con il client MySQL (basato su testo), l'ho fatto funzionare con un Debian Buster in un contenitore Docker.

Supponi di avere il sistema apt e di configurare wget, procedi come segue:

  1. sudo apt-get update
  2. sudo apt-get install lsb-release -y
  3. Scarica un pacchetto Debian che aggiorna le fonti apt per te dal sito Web MySQL .
  4. sudo dpkg -i mysql-apt-config_0.8.13-1_all.debe seleziona le opzioni che desideri. Nel mio caso ho solo bisogno MySQL Tools & Connectorsdi essere abilitato.
  5. sudo apt-get update
  6. sudo apt-get install mysql-client -y
  7. Fatto. Ora puoi eseguire il nuovo client MySQL e connetterti con il nuovo metodo di autenticazione.

Questa è stata la risposta giusta per i problemi WSL, grazie!
Andrew Landsverk,

1

Prova a utilizzare la password legacy durante il download e l'installazione di MySql, che mi ha aiutato. Oppure segui il metodo pubblicato da Santhosh Shivan per Mac OS.


0

Scaricare una versione di sviluppo di 8.0.11-rc ha funzionato per me su un Mac. con i seguenti comandi docker:

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

-3

Ho risolto questo problema installando MySQL 5.7:

Passaggio 1: abilitare il repository MySQL

Prima di tutto, devi abilitare il repository yum di rilascio della community di MySQL 5.7 sul tuo sistema. I pacchetti rpm per la configurazione del repository yum sono disponibili sul sito Web ufficiale di MySQL. Utilizzare il comando seguente come da versione del sistema operativo in uso.

Su CentOS e RHEL 7

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

Su CentOS e RHEL 6

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

Su Fedora 27

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

Su Fedora 26

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

Su Fedora 25

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

Passaggio 2: installare il server MySQL 5.7

Come hai abilitato con successo il repository yum MySQL sul tuo sistema. Ora installa il server di community MySQL 5.7 usando i seguenti comandi come per la versione del tuo sistema operativo.

Su CentOS e RHEL 7/6

yum install mysql-community-server

Su Fedora il 27/26/25

 dnf install mysql-community-server

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


-5

Il rollback alle installazioni precedenti (su MySQL Community Server 5.7 e Workbench 6.1) e l'impostazione di nuove credenziali MySQL ha funzionato per me!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.