Плагин аутентификации caching_sha2_password не может быть загружен


435

Я соединяю MySQL - 8.0 с MySQL Workbench и получаю следующую ошибку:

Плагин аутентификации caching_sha2_password не может быть загружен: dlopen (/usr/local/mysql/lib/plugin/caching_sha2_password.so, 2): изображение не найдено

Я пробовал и с другим клиентским инструментом.

Любое решение для этого?


2
Возможно, вам удастся решить эту проблему, если настроить MySQL 8.0 для работы в режиме mysql_native_password.
Рэймонд Нейланд

6
Правильно, MySQL Workbench требуется обновление коннектора для работы с кэшированными паролями sha2 (скоро).
Майк Лишке

7
Я установил логин по умолчанию на родной и перезапустил, проблема остается, и я не могу войти, чтобы создать нового пользователя. Удивительно, что в 2018 году установка Mysql и верстака не закончилась. Контроль качества.
ChrisR

1
Я не знаю, откуда у вас сложилось впечатление, что больше не будет 32-битной клиентской библиотеки mysql, но это не так. Что правда, так это то, что MySQL Workbench больше не поставляется с 32-битной версией.
Майк Лишке

2
Те ответы, предлагающие использовать более слабое шифрование, не верны. Используйте других клиентов, таких как tableplus .
ohkts11

Ответы:


279

Примечание: для MAC OS

  1. Откройте MySQL из Системных настроек> Инициализировать базу данных>
  2. Введите новый пароль.
  3. Выберите «Использовать старый пароль»
  4. Запустите сервер снова.
  5. Теперь подключите MySQL Workbench

Описание изображения


Это помогло на OSX
Салам

2
Эта работа, спасибо. Я думаю, что это работает, потому что MySQL Workbench использует устаревшее шифрование пароля для подключения к серверу БД. Это также можно сделать при установке MySQL и выборе устаревшего шифрования вместо рекомендуемого шифрования с надежным паролем.
monkSinha

1
MySQL некоторых версий имеет другую панель настроек, и это не может работать
Майкл Ян

8
Реклама, возвращающаяся к старой и менее защищенной аутентификации, вообще не является хорошим решением.
Майк Лишке

63
У меня нет MySQL в Системных настройках
JavaRunner

249

Вы можете изменить шифрование пароля, как это.

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

33
Что если OP захочет использовать совершенно новый классный метод аутентификации?
LibertyPaul

@twocold, хороший запрос сценария. + 1
Хайдар Али Хан

Обратите внимание, что имя пользователя и ваш пароль должны быть заключены в одинарные кавычки, как показано в коде @twocold.
матрица

@twocold Как вы «отмените» ALTER USER выше обратно к стандарту MySQL 8.0 (новый уровень шифрования), как только вы это сделали, и это не работает?
Уилл Белден

1
@BrianFitzGerald это "caching_sha2_password", ссылка здесь или здесь .
Ян Карин

114

Для Windows 10:

Откройте командную строку:

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

Кроме того, вы можете изменить конфигурацию my.ini следующим образом:

[mysqld]

default_authentication_plugin=mysql_native_password

Перезапустите MySQL Server и снова откройте Workbench.


1
Изменение my.ini не сработало бы для меня, но смена командной строки сработала.
Амельвин

Изменение my.ini решило мою проблему. Спасибо.
Беркант

my.iniрасположение файла: stackoverflow.com/a/20311286/923560
Abdull

Я просто хочу отметить, что настройка должна быть выполнена на сервере, к которому вы хотите подключиться, и ALTER USER работал для меня, чтобы подключиться из Windows к удаленному серверу mysql
Alcides

Не ограничивается Windows 10
Геза Тури

76

Вы можете изменить шифрование пароля пользователя, изменив пользователя с помощью следующей команды Alter:

ALTER USER 'username' @ 'ip_address', ИДЕНТИФИЦИРОВАННЫЙ С mysql_native_password BY 'password';

ИЛИ

Мы можем избежать этой ошибки, заставив ее работать со старым плагином пароля:

Сначала измените плагин аутентификации в файле my.cnf для файла Linux / my.ini в Windows :

[ТуздЫ]

default_authentication_plugin = mysql_native_password

Перезапустите сервер mysql, чтобы изменения вступили в силу, и попробуйте подключиться через MySQL к любому клиенту mysql.

Если все еще не удается подключиться и получить приведенную ниже ошибку:

Unable to load plugin 'caching_sha2_password'

Это означает, что вашему пользователю нужен вышеуказанный плагин. Поэтому попробуйте создать нового пользователя командой create user или grant после изменения плагина по умолчанию. тогда новому пользователю нужен собственный плагин, и вы сможете подключить MySQL.

Спасибо


5
Определенно, это не решение проблемы с отсутствующим плагином.
LibertyPaul

1
Это. Проблема в том, что программы управления БД еще не справились с этим. Так что, если вы не являетесь разработчиком MySQL, это ваш обходной путь на данный момент.
Кевин Ганьон

Работал на меня. Спасибо
Лукас Араужо

Часть о создании нового пользователя после добавления флага конфигурации имеет решающее значение.
ниппонец

70

В настоящее время (на 2018/04/23) вам необходимо загрузить разрабатываемый выпуск . В GA те не работают.

Мне не удалось подключиться к последней версии GA (6.3.10).

Он работал с mysql-workbench-community-8.0.11-rc-winx64.msi(со страницы https://dev.mysql.com/downloads/workbench/ , вкладка « Релизы для разработчиков» ).


4
На самом деле это правильный ответ: MySQL 8.0 требует MySQL Workbench 8.0, который, к сожалению, выглядит все еще в бета-режиме. Но после установки вы можете придерживаться нового шифрования пароля SHA, не нужно ничего менять.
Кристи С.

Не бета, а релиз-кандидат (RC). GA (общедоступная) версия скоро появится.
Майк Лишке

Лучшая идея для меня.
Войцех Форнал

2
Это все еще так. Установка версии GA по-прежнему приводит к невозможности входа в систему с использованием рекомендованного шифрования пароля. Нет предупреждения, что версия GA работает только с устаревшей аутентификацией.
Дональд Рич

2
По крайней мере, в MacOS версия GA в настоящее время 8.0.12 (2018/08/13) и решает проблему! Спасибо!
Бруно Сильвано

63

У меня была та же проблема, но ответ Амана Аггарвала не сработал для меня с контейнером Docker, на котором запущен mysql 8.X. Я зашел в контейнер

docker exec -it CONTAINER_ID bash

затем войдите в MySQL как root

mysql --user=root --password

Введите пароль для пользователя root (по умолчанию «root»). Наконец, выполните:

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

Вы все готово.


Похоже, это может быть хорошим ответом на то, что я ищу. Но я не знаю, что это такое. Вы имеете в виду принятый ответ? или другой ...
Зак Смит

1
Да @ZachSmith, «это» относится к принятому ответчику.
axelferreira

Как насчет docker exec -it CONTAINER_ID mysql --user=root --passwordдвух команд, которые полагаются на наличие bashоболочки (что не обязательно в будущем)?
Эрик

Это не сработало с sequelpro 1.1.2 с использованием Docker Desktop 2.0.3.0 (Mac). все команды работают, но сиквел про ошибки при входе в систему - используя mysql: latest (v8.0.15)
arcseldon

Как сообщали другие, использование mysql 5.7 работает без необходимости:docker run -p 3306:3306 --name mysql1 -e MYSQL_ROOT_PASSWORD=secret -d mysql:5.7
arcseldon

47

Хорошо, потратил много времени на это, так что вот резюме по состоянию на 19 марта 2019 года

Если вы специально пытаетесь использовать образ Docker с MySql 8+ , а затем используете SequelPro для доступа к вашим базам данных, запущенным в этом контейнере, вам не повезло.

Смотрите выпуск 2699 sequelpro

Моя установка sequelpro 1.1.2 с использованием Docker Desktop 2.0.3.0 (Mac - Mojave), и попытался использовать mysql: latest (v8.0.15).

Как сообщали другие, использование mysql 5.7 работает без необходимости:

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

Конечно, можно использовать MySql 8+ на докере, и в этой ситуации (при необходимости) другие ответы, предоставленные здесь для caching_sha2_passwordпроблем типа, работают. Но сиквельпро НЕТ GO с MySql 8+

Наконец, я отказался от sequelpro (надежного друга в 2013-2014 годах) и вместо этого установил DBeaver . Все работало из коробки. Для докера я использовал:

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

Вы можете быстро просмотреть базы данных mysql, используя:

docker exec -it mysql1 bash

mysql -u root -p

show databases;

1
Большое спасибо за то, что поделились этим. Я пытался точно такой же комбо после случайного удаления моего контейнера разработки MySQL.
martn_st

1
Очень печально, что Sequel Pro больше не развивается активно :( Последние новости датированы 3 апреля 2016 года, а уже 2019 год. Это был лучший инструмент, который я видел для проводника MySQL.
Алексей Шныра

@OleksiiShnyra Правда, в течение нескольких лет не было производственного релиза, но, к вашему сведению, доступны новые "ночные" релизы. sequelpro.com/test-builds и через brew cask install homebrew/cask-versions/sequel-pro-nightly.
Питер W

Обходной путь, который может заставить SequelPro работать, для тех, кто может войти через командную строку ( mysqlклиент) и ALTERих таблицу myslq.user, указан здесь: github.com/sequelpro/sequelpro/issues/…
Питер В.

Если вы находитесь на MySQL 8 и не хотите , чтобы понизить до mysql_native_password, вы можете следовать этому: stackoverflow.com/a/56402217/2321594
Aidin

46

Я устанавливал MySQL на свой компьютер с Windows 10 с помощью « MySQL Web Installer » и столкнулся с той же проблемой при попытке подключения с использованием MySQL Workbench. Я исправил проблему, перенастроив сервер из окна установщика.

MySQL Web Installer - домашний экран

Нажав на опцию «Reconfigure», вы сможете перенастроить сервер. Нажимайте «Далее», пока не дойдете до «Способ аутентификации».

MySQL Installer - Метод аутентификации

На этой вкладке используйте второй параметр «Использовать устаревший метод проверки подлинности (сохранить совместимость с MySQL 5.x)».

Оставьте все как есть, и вот как я решил свою проблему.


1
Я вручную разархивирую mysql-8.0.11-winx64.zip и не могу легко решить проблему «caching_sha2_password не может быть загружен». Однако, используя mysql-installer-community-8.0.11.0.msi и следуя приведенной выше рекомендации, MySQL Workbench 8.0.11 может войти на сервер MySQL 8.0.11.
oraclesoon

38

нравится?

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

Попробуй в PWD

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

или вы должны использовать MySQL Workbench 8.0.11.


3
добавление --default-authentication-plugin = mysql_native_password работает как талисман <3 спасибо
Thomas Webber

21
  • Откройте клиент командной строки MySQL

  • Создать нового пользователя с новым проходом

Рассматривая пример пути к папке bin сверху, вот код, который вам нужно запустить в командной строке, строка за строкой:

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';
  • Затем вы снова можете получить доступ к Workbench (вы сможете это сделать после создания нового локального соединения и использования новых учетных данных, чтобы начать использовать программу).

Установите новое локальное подключение к хосту с указанным выше именем пользователя (собственный пользователь), войдите в систему с помощью пароля (новый_пароль)

Образ

Вежливость: Ответы на часто задаваемые вопросы UDEMY от Career365 Team


Это сработало. Почему? Я получил эту ошибку при попытке установить соединение rootбез пароля, который работал в командной строке, но не в Sequel Pro.
Вольт

работайте как шарм, полная корреляция с вопросом о запуске темы и обратите внимание: у вас должен быть Mac OS Catalina, докер 19.03, последние изображения mysql, исключите эту команду $ docker run -p 3306: 3306 -d --name mysql -e MYSQL_ROOT_PASSWORD = пароль mysql / mysql-сервер с сайта dzone.
банзай

13

Для тех, кто использует Docker или Docker Compose, я столкнулся с этой ошибкой, потому что я не установил версию своего образа MySQL. Докер автоматически попытается получить последнюю версию, которая является 8.

Я установил MySQL на 5.7 и перестроил образ, и он работал как обычно:

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

3
Есть веские причины использовать версию 8 вместо версии 5. Я на этой странице, потому что я хочу использовать версию 8 вместо версии 5
Зак Смит

2
используя mysql:5.7вместо того, чтобы mysql:latestрешить вопрос для меня
Франческо Борци

13

Это мое определение базы данных в моем 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"

На соответствующей строке есть точка входа .

После сборки и сборки вы можете проверить это с помощью:

$ 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

Для Windows 10 ,

  1. Изменить my.iniфайл вC:\ProgramData\MySQL\MySQL Server 8.0\

    [mysqld]
    default_authentication_plugin=mysql_native_password
  2. Перезапустите службу MySQL.

  3. Войдите в MySQL в командной строке и выполните следующие команды в MySQL:

    • Создать нового пользователя.

      CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
    • Предоставь все привилегии.

      GRANT ALL PRIVILEGES ON * .* TO 'user'@'localhost';
  4. Откройте MySQL Workbench и откройте новое соединение, используя новые учетные данные пользователя.

Я столкнулся с той же проблемой, и это сработало.


9

Вот решение, которое работало для меня после установки MySQL 8.0 на Windows 10.

Предположим, что имя пользователя MySQL rootи парольadmin

Откройте командную строку и введите следующие команды:

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

mysql_upgrade -uroot -padmin

mysql -uroot -padmin

ALTER USER 'root' @ 'localhost' ИДЕНТИФИЦИРОВАНО С mysql_native_password BY 'admin'


8

Если вы получаете эту ошибку на GitLab CI, как я: просто перейдите с последней версии на 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

я нашел это

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

не работал сам по себе. Мне также нужно было установить

[mysqld]
    default_authentication_plugin=mysql_native_password

в /etc/mysql/mysql.conf.d/mysqld.cnf в Ubuntu 18.04 с PHP 7.0


Это сработало для меня в Centos 7. По какой-то причине мои пароли были сохранены как caching_sha2_password по умолчанию, и я получал ошибку # 1251 при попытке войти в систему с помощью phpMyAdmin.
DaFudgeWizzad


6

Для меня это начало происходить, потому что в проекте я использовал образ Docker mysql: latest (который был версии 5 и работал нормально), а во время более поздней сборки последняя версия была переключена на версию 8 и перестала работать . Я изменил свое изображение на mysql: 5, и я больше не получал эту ошибку .


Прямо на голове! Спасибо.
Brcebn

6

Эта ошибка возникает, когда используемый инструмент несовместим с MySQL8, попробуйте обновить до последней версии MySQL Workbench для MySQL8


5

Почти как ответы выше, но, возможно, в простых запросах, я получал эту ошибку в моем весеннем загрузочном приложении наряду с hibernate после обновления MySQL. Мы создали нового пользователя, запустив приведенные ниже запросы к нашей БД. Я считаю, что это временная работа, чтобы использовать sha256_password вместо последней и хорошей аутентификации 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 для macOS решает эту проблему. Я могу установить соединение с защищенным паролем экземпляром mysql, запущенным в Docker.


Это то, что исправило это для меня. Я работал на более старой версии MySQL Workbench 6.3 с сервером 8.0. Хотя многие ответы здесь говорят о снижении совместимости с сервером, я просто обновил свою версию Workbench до последней версии 8.0 (в настоящее время 8.0.15).
Sum None

4

Хотя это не должно быть реальным решением, оно работает локально, если вы застряли

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

1
Это решает проблему.
KTA

2

Приведенное ниже решение работает для меня введите описание изображения здесь

Перейдите в Mysql Workbench -> Сервер-> Пользователи и привилегии. 1.Нажмите Добавить учетную запись.

2.На вкладке «Вход в систему» ​​представлены новые сведения и убедитесь, что в качестве стандарта выбран тип аутентификации, а также соответствующие административные роли и привилегии схемы.

введите описание изображения здесь


2

Если вы пытаетесь подключиться к серверу MySQL из текстового клиента MySQL с другого компьютера (будь то Docker или нет)

Большинство ответов здесь связаны с подключением с настольного клиента или с просьбой перейти на более старый метод аутентификации. Если вы соединяете его с клиентом MySQL (текстовым), я заставил его работать с Debian Buster в контейнере Docker.

Скажем, у вас настроена система apt и wget, выполните следующие действия:

  1. sudo apt-get update
  2. sudo apt-get install lsb-release -y
  3. Загрузите пакет Debian, который обновляет apt для вас, с веб-сайта MySQL .
  4. sudo dpkg -i mysql-apt-config_0.8.13-1_all.debи выберите нужные параметры. В моем случае мне нужно MySQL Tools & Connectorsтолько включить.
  5. sudo apt-get update
  6. sudo apt-get install mysql-client -y
  7. Выполнено. Теперь вы можете запустить новый клиент MySQL и подключиться с новым методом аутентификации.

Это был правильный ответ на вопросы WSL, спасибо!
Андрей Ландсверк

1

Попробуйте использовать старый пароль при загрузке и установке MySql, который мне помог. Или следуйте методу, опубликованному Сантошем Шиваном для Mac OS.


0

Загрузка макета 8.0.11-rc работала для меня на Mac. с помощью следующих команд Docker:

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

-3

Я решил эту проблему, установив MySQL 5.7:

Шаг 1 - Включить репозиторий MySQL

Прежде всего, вам необходимо включить репозиторий yum сообщества MySQL 5.7 в вашей системе. Пакеты rpm для конфигурации репозитория yum доступны на официальном сайте MySQL. Используйте одну из следующих команд в соответствии с версией вашей операционной системы.

На CentOS и RHEL 7

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

На CentOS и RHEL 6

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

На Fedora 27

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

На Fedora 26

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

На Fedora 25

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

Шаг 2 - Установите MySQL 5.7 Server

Как вы успешно включили MySQL yum репозиторий в вашей системе. Теперь установите сервер сообщества MySQL 5.7, используя следующие команды в соответствии с версией вашей операционной системы.

На CentOS и RHEL 7/6

yum install mysql-community-server

На Fedora 27/26/25

 dnf install mysql-community-server

источник: https://tecadmin.net/install-mysql-5-7-centos-rhel/


-5

Откат к предыдущим установкам (MySQL Community Server 5.7 и Workbench 6.1) и настройка новых учетных данных MySQL работали для меня!

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.