El complemento de autenticación 'caching_sha2_password' no se puede cargar

435

Estoy conectando MySQL - 8.0 con MySQL Workbench y obtengo el siguiente error:

El complemento de autenticación 'caching_sha2_password' no se puede cargar: dlopen (/usr/local/mysql/lib/plugin/caching_sha2_password.so, 2): imagen no encontrada

He intentado con otra herramienta de cliente también.

¿Alguna solución para esto?

Aman Aggarwal
fuente
2
Es posible que pueda solucionar este problema si configura MySQL 8.0 para que se ejecute en modo mysql_native_password.
Raymond Nijland
66
Correcto, MySQL Workbench necesita una actualización del conector para poder trabajar con contraseñas sha2 almacenadas en caché (próximamente).
Mike Lischke
77
Establecí el inicio de sesión predeterminado en nativo y reinicié, el problema persiste y no puedo iniciar sesión para crear un nuevo usuario. Sorprende que en 2018 una instalación de Mysql y workbench no se agote. Control de calidad de mala calidad.
ChrisR
1
No sé de dónde sacaste la impresión de que ya no habría una biblioteca de cliente mysql de 32 bits, pero eso no es cierto. Lo que es cierto es que MySQL Workbench ya no viene con una versión de 32 bits.
Mike Lischke
2
Esas respuestas que sugieren usar un cifrado más débil no es la forma correcta. Use otros clientes como tableplus .
ohkts11

Respuestas:

279

Nota: para MAC OS

  1. Abra MySQL desde Preferencias del sistema> Inicializar base de datos>
  2. Escribe tu nueva contraseña.
  3. Elija 'Usar contraseña heredada'
  4. Inicie el servidor nuevamente.
  5. Ahora conecte el MySQL Workbench

descripción de la imagen

Santhosh Sivan
fuente
Esto ayudó en OSX
Salam
2
Este trabajo, gracias. Creo que funciona porque MySQL Workbench utiliza cifrado de contraseña heredado para conectarse al servidor de base de datos. También se puede hacer al instalar MySQL y elegir el cifrado heredado, en lugar del cifrado de contraseña fuerte recomendado.
monkSinha
1
El mysql de algunas versiones tiene un panel de configuración diferente y esto no puede funcionar
Michael Yang
8
La publicidad para volver a la autenticación antigua y menos segura no es una buena solución.
Mike Lischke
63
No tengo MySQL en las preferencias del sistema
JavaRunner
248

Puede cambiar el cifrado de la contraseña de esta manera.

ALTER USER 'yourusername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'youpassword';
doble
fuente
33
¿Qué pasa si OP quiere usar un nuevo método de autenticación genial?
LibertyPaul
@twocold, buena consulta de script. + 1
Md Haidar Ali Khan
Tenga en cuenta que su nombre de usuario y su contraseña deben ir entre comillas simples como se muestra en el código de @twocold.
matriz
@twocold ¿Cómo "deshace" el ALTERO DE USUARIO arriba al estándar MySQL 8.0 (nuevo nivel de encriptación) una vez que lo ha hecho y no funciona?
Will Belden
1
@BrianFitzGerald es "caching_sha2_password", enlace aquí o aquí .
Yan Karin
114

Para Windows 10:

Abra el símbolo del sistema:

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

Alternativamente, puede cambiar la configuración de my.ini de la siguiente manera:

[mysqld]

default_authentication_plugin=mysql_native_password

Reinicie el servidor MySQL y abra el Workbench nuevamente.

Araz Ghazaryan
fuente
1
Cambiar my.ini no funcionaría para mí, pero el cambio del símbolo del sistema sí.
amelvin
Cambiar my.ini está resuelto mi problema. Gracias.
Berkant
my.iniubicación del archivo: stackoverflow.com/a/20311286/923560
Abdull
Solo quiero señalar que la configuración debe hacerse en el servidor al que desea conectarse, y el USUARIO ALTER trabajó para que yo me conecte desde Windows a un servidor mysql remoto
Alcides
No limitado a Windows 10
Geza Turi
76

Puede cambiar el cifrado de la contraseña del usuario alterando el usuario con el siguiente comando Alter:

ALTERAR USUARIO 'username' @ 'ip_address' IDENTIFICADO CON mysql_native_password POR 'contraseña';

O

Podemos evitar este error haciendo que funcione con el antiguo complemento de contraseña:

Primero cambie el complemento de autenticación en el archivo my.cnf para el archivo Linux / my.ini en Windows :

[mysqld]

default_authentication_plugin = mysql_native_password

Reinicie el servidor mysql para tomar los cambios en efecto e intente conectarse a través de MySQL con cualquier cliente mysql.

Si aún no puede conectarse y obtiene el siguiente error:

Unable to load plugin 'caching_sha2_password'

Significa que su usuario necesita el complemento anterior. Por lo tanto, intente crear un nuevo usuario con el comando crear usuario o otorgar después de cambiar el complemento predeterminado. entonces el nuevo usuario necesita el complemento nativo y podrá conectarse a MySQL.

Gracias

Aman Aggarwal
fuente
55
Definitivamente no es una solución del problema con la falta de conexión.
LibertyPaul
1
Está. El problema es que los softwares de administración de bases de datos aún no lo manejan. Entonces, a menos que sea un desarrollador de mysql workbench, esta es su solución por ahora.
Kevin Gagnon
Trabajó para mi. Gracias
Lucas Araújo
La parte sobre la creación de un nuevo usuario después de agregar el indicador de configuración es crucial.
nipponese
70

Actualmente (el 23/04/2018), necesita descargar un versión de desarrollo . Los GA no funcionan.

No pude conectarme con la última versión de GA (6.3.10).

Funcionó con mysql-workbench-community-8.0.11-rc-winx64.msi(de https://dev.mysql.com/downloads/workbench/ , pestaña Publicaciones de desarrollo ).

Monte Carlo
fuente
44
De hecho, esta es la respuesta correcta: MySQL 8.0 requiere MySQL Workbench 8.0, que desafortunadamente todavía se ve en modo beta. Pero una vez instalado, puede seguir con el nuevo cifrado de contraseña SHA, sin necesidad de cambiar nada.
Cristi S.
No es una versión beta sino una versión candidata (RC). La versión GA (generalmente disponible) llegará pronto.
Mike Lischke
La mejor idea para mi.
Wojciech Fornal
2
Este sigue siendo el caso. La instalación de la versión GA todavía resulta en la imposibilidad de iniciar sesión utilizando el cifrado de contraseña recomendado. No hay advertencia de que la versión GA funciona solo con la autenticación heredada.
Donald Rich
2
¡Al menos en MacOS, la versión GA es actualmente 8.0.12 (13/08/2018) y resuelve el problema! ¡Gracias!
Bruno Silvano
63

Tuve el mismo problema, pero la respuesta de Aman Aggarwal no funcionó para mí con un contenedor Docker que ejecuta mysql 8.X. Logueé en el contenedor

docker exec -it CONTAINER_ID bash

luego inicie sesión en mysql como root

mysql --user=root --password

Ingrese la contraseña para root (el valor predeterminado es 'root') Finalmente, ejecute:

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

Estás listo.

axelferreira
fuente
Parece que podría ser una buena respuesta para lo que estoy buscando. Pero no sé qué es "esto". ¿te refieres a la respuesta aceptada? u otro ...
Zach Smith
1
Sí @ZachSmith, "esto" se refiere al respondedor aceptado.
axelferreira
¿Qué tal en docker exec -it CONTAINER_ID mysql --user=root --passwordlugar de dos comandos que dependen de la presencia del bashshell (que no es seguro en el futuro)?
Eric
Esto no funcionó con sequelpro 1.1.2 usando docker desktop 2.0.3.0 (mac). todos los comandos funcionan, pero los errores secuela pro al iniciar sesión - usando mysql: latest (v8.0.15)
arcseldon
Como otros han informado, el uso de MySQL 5.7 funciona sin nada requerido:docker run -p 3306:3306 --name mysql1 -e MYSQL_ROOT_PASSWORD=secret -d mysql:5.7
arcseldon
47

Ok, perdí mucho tiempo en esto, así que aquí hay un resumen del 19 de marzo de 2019

Si está tratando específicamente de usar una imagen Docker con MySql 8+ , y luego usa SequelPro para acceder a su (s) base (s) de datos que se ejecutan en ese contenedor docker, no tiene suerte.

Vea el número 2699 de sequelpro

Mi configuración es sequelpro 1.1.2 usando docker desktop 2.0.3.0 (mac - mojave), e intenté usar mysql: latest (v8.0.15).

Como otros han informado, usar mysql 5.7 funciona sin nada requerido:

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

Por supuesto, es posible usar MySql 8+ en Docker, y en esa situación (si es necesario), otras respuestas proporcionadas aquí para caching_sha2_passwordproblemas de tipo funcionan. Pero sequelpro es un NO GO con MySql 8+

Finalmente, abandoné sequelpro (un amigo de confianza de 2013-2014) y en su lugar instalé DBeaver . Todo salió de la caja. Para docker, usé:

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

Puede echar un vistazo rápido a las bases de datos mysql usando:

docker exec -it mysql1 bash

mysql -u root -p

show databases;
arcseldon
fuente
1
Muchas gracias por compartir esto. Estaba intentando exactamente el mismo combo después de eliminar accidentalmente mi contenedor de desarrollo de MySQL.
martn_st
1
Muy triste que Sequel Pro ya no se desarrolle activamente :( Las últimas noticias datan del 3 de abril de 2016, mientras que ya es 2019. Fue la mejor herramienta que he visto para MySQL Explorer.
Oleksii Shnyra
@OleksiiShnyra es cierto que no ha habido un lanzamiento de producción en algunos años, pero para su información, hay disponibles nuevos lanzamientos "nocturnos". sequelpro.com/test-builds y vía brew cask install homebrew/cask-versions/sequel-pro-nightly.
Peter W
Hay una solución alternativa que puede hacer que SequelPro funcione, para aquellos que pueden iniciar sesión a través de la línea de comando ( mysqlcliente) y ALTERsu tabla myslq.user, que se menciona aquí: github.com/sequelpro/sequelpro/issues/…
Peter W
Si está en MySQL 8 y no desea bajar de categoría mysql_native_password, puede seguir esto: stackoverflow.com/a/56402217/2321594
Aidin
46

Estaba instalando MySQL en mi PC con Windows 10 usando " MySQL Web Installer " y estaba enfrentando el mismo problema al intentar conectarme usando MySQL workbench. Solucioné el problema reconfigurando el servidor desde la ventana del instalador.

Instalador web MySQL - Pantalla de inicio

Al hacer clic en la opción "Reconfigurar", permitirá reconfigurar el servidor. Haga clic en "Siguiente" hasta llegar al "Método de autenticación".

Instalador MySQL - Método de autenticación

Una vez en esta pestaña, use la segunda opción "Usar método de autenticación heredado (conservar la compatibilidad con MySQL 5.x)".

Mantenga todo lo demás como está y así es como resolví mi problema.

ImtiazeA
fuente
1
Descomprimo manualmente mysql-8.0.11-winx64.zip y no puedo resolver fácilmente el problema "no se puede cargar caching_sha2_password". Sin embargo, usando mysql-installer-community-8.0.11.0.msi y sigo las recomendaciones anteriores, MySQL Workbench 8.0.11 puede iniciar sesión en el servidor MySQL 8.0.11.
Oraclesoon
21
  • Abra MySQL Command Line Client

  • Crea un nuevo usuario con un nuevo pase

Considerando un ejemplo de una ruta a una carpeta bin en la parte superior, aquí está el código que debe ejecutar en el símbolo del sistema, línea por línea:

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';
  • Luego, puede acceder a Workbench nuevamente (debería poder hacerlo después de crear una nueva conexión de host local y usar las nuevas credenciales para comenzar a usar el programa).

Configure una nueva conexión de host local con el nombre de usuario mencionado anteriormente (usuario nativo), inicie sesión con la contraseña (nueva_contraseña)

Imagen

Cortesía: Preguntas frecuentes sobre UDEMY respondidas por el equipo de Career365

Ahmed Ziyad
fuente
Esto funcionó. ¿Por qué? Recibí este error al intentar conectarme con rooty sin contraseña, que funcionó en la línea de comando, pero no en Sequel Pro.
Volte
funciona como encanto, corelation completo con Thread Start question y tenga en cuenta: debe tener Mac os Catalina, docker 19.03, últimas imágenes de mysql, ejecute este comando $ docker run -p 3306: 3306 -d --name mysql -e MYSQL_ROOT_PASSWORD = contraseña mysql / mysql-server del sitio web de dzone.
Banzai
13

Para aquellos que usan Docker o Docker Compose, experimenté este error porque no configuré la versión de mi imagen MySQL. Docker intentará automáticamente obtener la última versión, que es la 8.

Configuré MySQL a 5.7 y reconstruí la imagen y funcionó normalmente:

version: '2'
services: 
  db:
   image: mysql:5.7
Dylan Pierce
fuente
3
Hay razones válidas para usar la versión 8 en lugar de la versión 5. Estoy en esta página porque quiero usar la versión 8 en lugar de la versión 5
Zach Smith
2
usando en mysql:5.7lugar de mysql:latestresolver el problema para mí
Francesco Borzi
13

Esta es mi definición de databdase en mi 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 línea relevante allí es el punto de entrada .

Después de construirlo y subirlo, puedes probarlo 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 |
+---+
Maximiliano de Mattos
fuente
11

Para Windows 10 ,

  1. Modificar my.iniarchivo enC:\ProgramData\MySQL\MySQL Server 8.0\

    [mysqld]
    default_authentication_plugin=mysql_native_password
  2. Reinicie el servicio MySQL.

  3. Inicie sesión en MySQL en la línea de comandos y ejecute los siguientes comandos en MySQL:

    • Crea un nuevo usuario.

      CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
    • Concede todos los privilegios.

      GRANT ALL PRIVILEGES ON * .* TO 'user'@'localhost';
  4. Abra el banco de trabajo MySQL y abra una nueva conexión con las nuevas credenciales de usuario.

Estaba enfrentando el mismo problema y esto funcionó.

Preetham
fuente
9

Aquí está la solución que funcionó para mí después de la instalación de MySQL 8.0 en Windows 10.

Supongamos que el nombre de usuario MySQL es rooty la contraseña esadmin

Abra el símbolo del sistema e ingrese los siguientes comandos:

cd C: \ Archivos de programa \ MySQL \ MySQL Server 8.0 \ bin

mysql_upgrade -uroot -padmin

mysql -uroot -padmin

ALTERAR USUARIO 'root' @ 'localhost' IDENTIFICADO CON mysql_native_password POR 'admin'

Pratik Patil
fuente
8

Si recibe este error en GitLab CI como yo: simplemente cambie de la última versión a la 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
fuente
7

encontre eso

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

No funcionó por sí mismo. También necesitaba configurar

[mysqld]
    default_authentication_plugin=mysql_native_password

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

Darrell Duane
fuente
Esto funcionó para mí en Centos 7. Por alguna razón, mis contraseñas se guardaron como caching_sha2_password de forma predeterminada y recibí el error # 1251 al intentar iniciar sesión con phpMyAdmin.
DaFudgeWizzad
6

Este error aparece cuando la herramienta utilizada no es compatible con MySQL8, intente actualizar a la última versión de MySQL Workbench para MySQL8

Shammoo
fuente
5

Casi como las respuestas anteriores, pero puede estar en consultas simples, recibí este error en mi aplicación de arranque de primavera junto con hibernar después de la actualización de MySQL. Creamos un nuevo usuario ejecutando las consultas a continuación en nuestra base de datos. Creo que esta es una solución temporal para usar sha256_password en lugar de la última y buena autenticación caching_sha2_password.

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

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

MySQLWorkbench 8.0.11 para macOS aborda esto. Puedo establecer una conexión con la instancia de mysql protegida con contraseña de root que se ejecuta en Docker

Benjamin Lin
fuente
Esto es lo que me arregló. Estaba ejecutando un MySQL Workbench 6.3 anterior con un servidor 8.0. Si bien muchas respuestas aquí dicen reducir la compatibilidad del servidor, simplemente actualicé mi versión de Workbench a la última versión 8.0 (actualmente 8.0.15).
Sum None
4

Aunque esto no debería ser una solución real , funciona localmente si está atascado

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';
elad plata
fuente
1
Esto resuelve el problema.
kta
2

La siguiente solución funcionó para mí ingrese la descripción de la imagen aquí

Vaya a Mysql Workbench -> Servidor-> Usuarios y privilegios 1.Haga clic en Agregar cuenta

2.En la pestaña de inicio de sesión, proporcione nuevos detalles y asegúrese de elegir el tipo de autenticación como estándar y elija las funciones administrativas y los privilegios de esquema respectivos

ingrese la descripción de la imagen aquí

Deepak rkm
fuente
2

Si está intentando conectarse a un servidor MySQL desde un cliente MySQL basado en texto desde otra computadora (ya sea Docker o no)

La mayoría de las respuestas aquí implican conectarse desde un cliente de escritorio o pedirle que cambie a un método de autenticación más antiguo. Si lo está conectando con el cliente MySQL (basado en texto), lo hice funcionar con un Debian Buster en un contenedor Docker.

Supongamos que tiene configurado el sistema apt y wget, haga lo siguiente:

  1. sudo apt-get update
  2. sudo apt-get install lsb-release -y
  3. Descargue un paquete de Debian que actualice las fuentes adecuadas para usted desde el sitio web MySQL .
  4. sudo dpkg -i mysql-apt-config_0.8.13-1_all.deby seleccione las opciones que desee. En mi caso solo necesito MySQL Tools & Connectorsestar habilitado.
  5. sudo apt-get update
  6. sudo apt-get install mysql-client -y
  7. Hecho. Ahora puede ejecutar el nuevo cliente MySQL y conectarse con el nuevo método de autenticación.
abrazo
fuente
Esta fue la respuesta correcta para los problemas de WSL, ¡gracias!
Andrew Landsverk
1

Intente usar una contraseña heredada mientras descarga e instala MySql, eso me ayudó. O siga el método publicado por Santhosh Shivan para Mac OS.

Anupriya Krishnamoorthy
fuente
0

La descarga de una versión de desarrollo de 8.0.11-rc me funcionó en una Mac. con los siguientes comandos de docker:

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

Resolví este problema instalando MySQL 5.7:

Paso 1 - Habilite el repositorio MySQL

En primer lugar, debe habilitar MySQL 5.7 community release yum repositorio en su sistema. Los paquetes rpm para la configuración del repositorio de yum están disponibles en el sitio web oficial de MySQL. Utilice uno de los siguientes comandos según la versión de su sistema operativo.

En CentOS y RHEL 7

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

En CentOS y RHEL 6

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

En Fedora 27

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

En Fedora 26

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

En Fedora 25

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

Paso 2 - Instalar el servidor MySQL 5.7

Como ha habilitado con éxito el repositorio de MySQL yum en su sistema. Ahora, instale el servidor de comunidad MySQL 5.7 usando los siguientes comandos según la versión de su sistema operativo.

En CentOS y RHEL 7/6

yum install mysql-community-server

En Fedora 27/26/25

 dnf install mysql-community-server

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

Laloi
fuente
-5

Volver a las instalaciones anteriores (a MySQL Community Server 5.7 y Workbench 6.1) y configurar nuevas credenciales de MySQL funcionó para mí.

nickitalyano
fuente