O plug-in de autenticação 'caching_sha2_password' não pode ser carregado

435

Estou conectando o MySQL - 8.0 ao MySQL Workbench e obtendo o erro abaixo:

O plug-in de autenticação 'caching_sha2_password' não pode ser carregado: dlopen (/usr/local/mysql/lib/plugin/caching_sha2_password.so, 2): imagem não encontrada

Eu tentei com outra ferramenta cliente também.

Alguma solução para isso?

Aman Aggarwal
fonte
2
Você poderá corrigir esse problema se configurar o MySQL 8.0 para executar no modo mysql_native_password.
Raymond Nijland
6
Correto, o MySQL Workbench precisa de uma atualização do conector para poder trabalhar com senhas sha2 em cache (em breve).
Mike Lischke
7
Defino o login padrão como nativo e reiniciei, o problema persiste e não consigo fazer login para criar um novo usuário. Surpreendente que em 2018 uma instalação do Mysql e do ambiente de trabalho não acabe. Controle de qualidade de má qualidade.
31418 ChrisR
1
Eu não sei de onde você tirou a impressão de que não haveria mais uma biblioteca cliente de 32 bits mysql, mas isso não é verdade. O que é verdade é que o MySQL Workbench não vem mais com uma versão de 32 bits.
21818 Mike Lischke
2
Essas respostas sugerindo o uso de criptografia mais fraca não são o caminho certo. Use outros clientes como o tableplus .
precisa saber é o seguinte

Respostas:

279

Nota: Para MAC OS

  1. Abra o MySQL em Preferências do Sistema> Inicializar Banco de Dados>
  2. Digite sua nova senha.
  3. Escolha 'Usar senha herdada'
  4. Inicie o servidor novamente.
  5. Agora conecte o MySQL Workbench

Descrição da imagem

Santhosh Sivan
fonte
Isso ajudou no OSX
Salam
2
Este trabalho, obrigado. Eu acho que funciona porque o ambiente de trabalho MySQL usa criptografia de senha herdada para se conectar ao servidor DB. Também pode ser feito durante a instalação do MySQL e a escolha da criptografia herdada, em vez da criptografia de senha forte recomendada.
MonkSinha
1
O mysql de algumas versões tem um painel de configuração diferente e isso não funciona
Michael Yang
8
Anunciar para voltar à autenticação antiga e menos segura não é uma boa solução.
Mike Lischke
63
Eu não tenho MySQL em Preferências do Sistema
JavaRunner
248

você pode alterar a criptografia da senha assim.

ALTER USER 'yourusername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'youpassword';
duplo
fonte
33
E se o OP quiser usar um novo método de autenticação legal?
precisa saber é o seguinte
. @twocold, agradável consulta roteiro + 1
Md Haidar Ali Khan
Observe que seu nome de usuário e sua senha devem ser colocados entre aspas simples, conforme mostrado no código por @twocold.
matriz
@twocold Como você "desfaz" o ALTER USER acima, volta ao padrão MySQL 8.0 (novo nível de criptografia) depois de fazer isso e ele não funciona?
que você precisa
1
@BrianFitzGerald é "caching_sha2_password", link aqui ou aqui .
Yan Karin
114

Para o Windows 10:

Abra o prompt de comando:

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

Como alternativa, você pode alterar a configuração my.ini da seguinte maneira:

[mysqld]

default_authentication_plugin=mysql_native_password

Reinicie o servidor MySQL e abra o Workbench novamente.

Araz Ghazaryan
fonte
1
Alterar my.ini não funcionaria para mim - mas a alteração no prompt de comando funcionou.
Amelvin
Alterar my.ini está resolvido meu problema. Obrigado.
berkant 8/01
my.inilocal do arquivo: stackoverflow.com/a/20311286/923560
Abdull
Eu só quero observar que a configuração deve ser feita no servidor que você deseja conectar, e o ALTER USER trabalhou para eu me conectar do Windows a um servidor mysql remoto
Alcides
Não limitado ao Windows 10
Geza Turi
76

Você pode alterar a criptografia da senha do usuário alterando o usuário com o comando Alter abaixo:

ALTER USUÁRIO 'nome_do_usuário' @ 'endereço_ip' IDENTIFICADO COM mysql_native_password BY 'senha';

OU

Podemos evitar esse erro, fazendo-o funcionar com o plug-in de senha antigo:

Primeiro, altere o plug-in de autenticação no arquivo my.cnf para o arquivo Linux / my.ini no Windows :

[mysqld]

default_authentication_plugin = mysql_native_password

Reinicie o servidor mysql para receber as alterações e tente conectar-se via MySQL a qualquer cliente mysql.

Se ainda não conseguir se conectar e obter o erro abaixo:

Unable to load plugin 'caching_sha2_password'

Isso significa que seu usuário precisa do plug-in acima. Portanto, tente criar um novo usuário com o comando create user ou grant após alterar o plug-in padrão. então o novo usuário precisa do plug-in nativo e você poderá conectar o MySQL.

obrigado

Aman Aggarwal
fonte
5
Definitivamente não é uma solução do problema com falta plug-in.
LibertyPaul
1
Isto é. A questão é que os softwares de gerenciamento de banco de dados ainda não lidam com isso. Portanto, a menos que você seja um desenvolvedor do mysql workbench, esta é sua solução por enquanto.
Kevin Gagnon
Trabalhou para mim. Obrigado
Lucas Araújo
A parte sobre a criação de um novo usuário após adicionar o sinalizador de configuração é crucial.
Nipponese
70

Atualmente (em 2018/04/23), você precisa baixar uma versão de desenvolvimento . Os GA não funcionam.

Não consegui me conectar à versão mais recente do GA (6.3.10).

Ele trabalhou com mysql-workbench-community-8.0.11-rc-winx64.msi(em https://dev.mysql.com/downloads/workbench/ , guia Liberações de desenvolvimento ).

Montecarlo
fonte
4
Essa é de fato a resposta certa: o MySQL 8.0 requer o MySQL Workbench 8.0, que infelizmente ainda parece estar no modo beta. Mas uma vez instalado, você pode ficar com a nova criptografia de senha SHA, sem precisar alterar nada.
187 Cristi S.Julho
Não é um beta, mas um candidato a lançamento (RC). A versão GA (disponível geralmente) será lançada em breve.
Mike Lischke
A melhor ideia para mim.
Wojciech Fornal
2
Este ainda é o caso. A instalação da versão GA ainda resulta na impossibilidade de efetuar login usando a criptografia de senha recomendada. Não há aviso de que a versão do GA funcione apenas com a autenticação herdada.
Donald Rich
2
Pelo menos no MacOS, a versão do GA atualmente é 8.0.12 (13/08/2018) e resolve o problema! Obrigado!
Bruno Silvano
63

Eu tive o mesmo problema, mas a resposta de Aman Aggarwal não funcionou para mim com um contêiner do Docker executando o mysql 8.X. Eu entrei no contêiner

docker exec -it CONTAINER_ID bash

então faça o login no mysql como root

mysql --user=root --password

Digite a senha para root (o padrão é 'root') Finalmente, execute:

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

Você está pronto.

axelferreira
fonte
Parece que pode ser uma boa resposta para o que estou procurando. Mas não sei o que é "isso". você quer dizer a resposta aceita? ou outro ...
Zach Smith
1
Sim @ZachSmith, "this" refere-se ao respondente aceito.
Axelferreira
Que tal em docker exec -it CONTAINER_ID mysql --user=root --passwordvez de dois comandos que dependem da presença do bashshell (o que não é certo no futuro)?
Eric
Isso não funcionou com o sequelpro 1.1.2 usando o docker desktop 2.0.3.0 (mac). Os comandos todo o trabalho, mas sequela pro erros no login - usando mysql: mais recente (v8.0.15)
arcseldon
Como outros relataram, o uso do mysql 5.7 não funciona com nada:docker run -p 3306:3306 --name mysql1 -e MYSQL_ROOT_PASSWORD=secret -d mysql:5.7
arcseldon 19/03/19
47

Ok, perdi muito tempo com isso, então aqui está um resumo a partir de 19 de março de 2019

Se você está especificamente tentando usar uma imagem do Docker com o MySql 8+ e, em seguida, usa o SequelPro para acessar seus bancos de dados em execução no contêiner do docker, você está sem sorte.

Veja a sequelpro edição 2699

Minha configuração é sequelpro 1.1.2 usando o docker desktop 2.0.3.0 (mac - mojave) e tentei usar o mysql: latest (v8.0.15).

Como outros relataram, o uso do mysql 5.7 não funciona com nada:

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

Obviamente, é possível usar o MySql 8+ no docker e, nessa situação (se necessário), outras respostas fornecidas aqui para caching_sha2_passwordproblemas de tipo funcionam. Mas sequelpro não é compatível com o MySql 8+

Finalmente, abandonei o sequelpro (um amigo de confiança de 2013-2014) e instalei o DBeaver . Tudo funcionou fora da caixa. Para docker, usei:

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

Você pode espiar rapidamente os bancos de dados mysql usando:

docker exec -it mysql1 bash

mysql -u root -p

show databases;
arcseldon
fonte
1
Muito obrigado por compartilhar isso. Eu estava tentando exatamente a mesma combinação depois de excluir acidentalmente meu contêiner de desenvolvimento MySQL.
22419 martin_st
1
. Muito triste que Sequel Pro não ativamente desenvolvendo mais :( Últimas notícias datado de 03 de abril de 2016, enquanto é 2019 já era a melhor ferramenta que eu vi para MySQL explorador.
Oleksii Shnyra
@OleksiiShnyra verdade que não há um lançamento de produção há alguns anos, mas, para sua informação, estão disponíveis novos lançamentos "noturnos". sequelpro.com/test-builds e via brew cask install homebrew/cask-versions/sequel-pro-nightly.
Peter W
Existe uma solução alternativa que pode fazer com que o SequelPro funcione, para aqueles que podem fazer login via linha de comando ( mysqlcliente) e ALTERsua tabela myslq.user, observada aqui: github.com/sequelpro/sequelpro/issues/…
Peter W
Se você está no MySQL 8 e não deseja fazer o downgrade para mysql_native_password, pode seguir o seguinte: stackoverflow.com/a/56402217/2321594
Aidin
46

Eu estava instalando o MySQL no meu PC com Windows 10 usando o " MySQL Web Installer " e estava enfrentando o mesmo problema ao tentar conectar-me usando o ambiente de trabalho MySQL. Corrigi o problema reconfigurando o servidor da janela do Instalador.

MySQL Web Installer - Tela Inicial

Clicando na opção "Reconfigurar", permitirá reconfigurar o servidor. Clique em "Avançar" até chegar em "Método de autenticação".

MySQL Installer - Método de autenticação

Uma vez nesta guia, use a segunda opção "Usar método de autenticação herdado (mantenha a compatibilidade do MySQL 5.x)".

Mantenha todo o resto como está e foi assim que resolvi meu problema.

ImtiazeA
fonte
1
Descompacte manualmente o mysql-8.0.11-winx64.zip e não consigo resolver facilmente o problema "caching_sha2_password não pode ser carregado". No entanto, usando mysql-installer-community-8.0.11.0.msi e sigo a recomendação acima, o MySQL Workbench 8.0.11 pode efetuar login no servidor MySQL 8.0.11.
oraclesoon
21
  • Abra o cliente de linha de comando do MySQL

  • Crie um novo usuário com um novo passe

Considerando um exemplo de caminho para uma pasta bin na parte superior, eis o código que você precisa executar no prompt de comando, linha por linha:

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';
  • Em seguida, você pode acessar o Workbench novamente (você poderá fazer isso depois de criar uma nova conexão localhost e usar as novas credenciais para começar a usar o programa).

Configure uma nova conexão de host local com o nome de usuário mencionado acima (usuário nativo), faça login usando a senha (new_password)

Imagem

Cortesia: UDEMY FAQs respondidas pela equipe Career365

Ahmed Ziyad
fonte
Isso funcionou. Por quê? Eu recebi esse erro ao tentar conectar-me com roote sem senha, que funcionava na linha de comando, mas não na Sequel Pro.
Volte
funciona como charme, corelação completa com a pergunta Thread Start e observe: você deve ter o Mac os Catalina, docker 19.03, imagens mais recentes do mysql, execute este comando $ docker run -p 3306: 3306 -d --name mysql -e MYSQL_ROOT_PASSWORD = password mysql / mysql-server no site dzone.
banzai
13

Para aqueles que usam o Docker ou o Docker Compose, ocorreu esse erro porque não defini minha versão da imagem do MySQL. O Docker tentará obter automaticamente a versão mais recente, que é 8.

Eu configurei o MySQL para 5.7 e reconstruí a imagem e funcionou normalmente:

version: '2'
services: 
  db:
   image: mysql:5.7
Dylan Pierce
fonte
3
Há razões válidas para uso a versão 8 em vez da versão 5. Estou nessa página, porque eu quero usar a versão 8 em vez da versão 5
Zach Smith
2
utilizando mysql:5.7, em vez de mysql:latestresolvido o problema para mim
Francesco Borzi
13

Esta é a minha definição de banco de dados no meu 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"

A linha relevante lá é ponto de entrada .

Depois de compilá-lo, você pode testá-lo com:

$ 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
fonte
11

Para o Windows 10 ,

  1. Modificar my.iniarquivo emC:\ProgramData\MySQL\MySQL Server 8.0\

    [mysqld]
    default_authentication_plugin=mysql_native_password
  2. Reinicie o serviço MySQL.

  3. Entre no MySQL na linha de comando e execute os seguintes comandos no MySQL:

    • Crie um novo usuário.

      CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
    • Conceda todos os privilégios.

      GRANT ALL PRIVILEGES ON * .* TO 'user'@'localhost';
  4. Abra o ambiente de trabalho MySQL e abra uma nova conexão usando as novas credenciais do usuário.

Eu estava enfrentando o mesmo problema e isso funcionou.

Preetham
fonte
9

Aqui está a solução que funcionou para mim após a instalação do MySQL 8.0 no Windows 10.

Suponha que o nome de usuário do MySQL seja roote a senha sejaadmin

Abra o prompt de comando e insira os seguintes comandos:

cd C: \ Arquivos de Programas \ MySQL \ MySQL Server 8.0 \ bin

mysql_upgrade -uroot -padmin

mysql -uroot -padmin

ALTER USUÁRIO 'root' @ 'localhost' IDENTIFICADO COM mysql_native_password BY 'admin'

Pratik Patil
fonte
8

Se você estiver recebendo este erro no GitLab CI como eu: Altere da versão mais recente para a versão 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
fonte
7

eu achei aquilo

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

não funcionou por si só. Eu também precisava definir

[mysqld]
    default_authentication_plugin=mysql_native_password

no /etc/mysql/mysql.conf.d/mysqld.cnf no Ubuntu 18.04 executando o PHP 7.0

Darrell Duane
fonte
Isso funcionou para mim no Centos 7. Por algum motivo, minhas senhas foram salvas como caching_sha2_password por padrão e eu estava recebendo o erro 1251 ao tentar efetuar login com o phpMyAdmin.
DaFudgeWizzad
6

Para mim, isso começou a acontecer porque, em um projeto, eu estava usando o Docker image mysql: latest (que era a versão 5 e estava funcionando bem) e, durante uma compilação posterior, a versão mais recente foi alterada para a versão 8 e parou de funcionar . Eu mudei minha imagem para mysql: 5 e I foi não recebendo este erro .

alberto56
fonte
Bem na cabeça! Obrigado.
brcebn
6

Este erro ocorre quando a ferramenta utilizada não é compatível com o MySQL8, tente atualizar para a versão mais recente do MySQL Workbench for MySQL8

Shammoo
fonte
5

Quase como as respostas acima, mas podem estar em consultas simples, eu estava recebendo esse erro no meu aplicativo de inicialização primavera, juntamente com o hibernação após a atualização do MySQL. Criamos um novo usuário executando as consultas abaixo em nosso banco de dados. Acredito que seja uma solução temporária para usar o sha256_password em vez da mais recente e boa autenticação caching_sha2_password.

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

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

O MySQLWorkbench 8.0.11 para macOS aborda isso. Eu posso estabelecer conexão com a instância mysql protegida por senha raiz em execução no docker.

Benjamin Lin
fonte
Foi isso que o corrigiu para mim. Eu estava executando um antigo MySQL Workbench 6.3 com um servidor 8.0. Embora muitas respostas aqui digam para reduzir a compatibilidade do servidor, simplesmente atualizei minha versão do Workbench para a versão 8.0 mais recente (atualmente 8.0.15).
Soma Nenhum
4

Embora isso não deva ser uma solução real , ele funciona localmente se você estiver preso

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';
elad prata
fonte
1
Isso resolve o problema.
kta
2

A solução abaixo funcionou para mim insira a descrição da imagem aqui

Vá para Mysql Workbench -> Servidor-> Usuários e Privilégios 1.Clique em Adicionar Conta

2. Na guia Login, forneça novos detalhes e escolha o Tipo de autenticação como padrão e escolha as respectivas funções administrativas e privilégios de esquema

insira a descrição da imagem aqui

Deepak rkm
fonte
2

Se você está tentando se conectar a um servidor MySQL a partir de um cliente MySQL baseado em texto de outro computador (seja Docker ou não)

A maioria das respostas aqui envolve a conexão de um cliente de desktop ou solicita que você mude para um método de autenticação mais antigo. Se você estiver conectando-o ao cliente MySQL (baseado em texto), eu o fiz funcionar com um Debian Buster em um contêiner Docker.

Digamos que você tenha o sistema apt e o wget configurado, faça o seguinte:

  1. sudo apt-get update
  2. sudo apt-get install lsb-release -y
  3. Faça o download de um pacote Debian que atualiza as fontes apt para você no site MySQL .
  4. sudo dpkg -i mysql-apt-config_0.8.13-1_all.debe selecione as opções desejadas. No meu caso, só preciso MySQL Tools & Connectorsestar habilitado.
  5. sudo apt-get update
  6. sudo apt-get install mysql-client -y
  7. Feito. Agora você pode executar o novo cliente MySQL e conectar-se ao novo método de autenticação.
huggie
fonte
Esta foi a resposta certa para problemas da WSL, obrigado!
Andrew Landsverk
1

Tente usar a senha herdada ao baixar e instalar o MySql, o que me ajudou. Ou siga o método publicado por Santhosh Shivan para Mac OS.

Anupriya Krishnamoorthy
fonte
0

O download de uma versão de desenvolvimento do 8.0.11-rc funcionou para mim em um mac. com os seguintes comandos do docker:

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

Resolvi esse problema instalando o MySQL 5.7:

Etapa 1 - Habilitar o repositório MySQL

Primeiro de tudo, você precisa habilitar o repositório yum de lançamento da comunidade MySQL 5.7 em seu sistema. Os pacotes rpm para a configuração do repositório yum estão disponíveis no site oficial do MySQL. Use o comando abaixo, conforme a versão do seu sistema operacional.

No CentOS e RHEL 7

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

No CentOS e RHEL 6

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

No Fedora 27

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

No Fedora 26

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

No Fedora 25

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

Etapa 2 - Instale o MySQL 5.7 Server

Como você ativou com sucesso o repositório MySQL yum no seu sistema. Agora, instale o servidor da comunidade MySQL 5.7 usando os seguintes comandos conforme a versão do seu sistema operacional.

No CentOS e RHEL 7/6

yum install mysql-community-server

No Fedora 27/26/25

 dnf install mysql-community-server

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

Laloi
fonte
-5

Voltar para as instalações anteriores (para MySQL Community Server 5.7 e Workbench 6.1) e configurar novas credenciais do MySQL funcionou para mim!

nickitalyano
fonte