Плагін аутентифікації "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.
Raymond Nijland

6
Правильно, MySQL Workbench потребує оновлення роз'єму, щоб мати можливість працювати з кешованими паролями sha2 (незабаром).
Майк Лішке

7
Я встановив вхід за замовчуванням на рідний і перезавантажений, проблема зберігається, і я не можу увійти, щоб створити нового користувача. Дивно, що у 2018 році встановлення Mysql та верстак не закінчується. Короткий контроль якості.
Кріс

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

2
Ті відповіді, що пропонують використовувати слабке шифрування - це не правильний шлях. Використовуйте інших клієнтів, таких як tableplus .
ohkts11

Відповіді:


279

Примітка. Для ОС MAC

  1. Відкрийте MySQL з Налаштування системи> Ініціалізувати базу даних>
  2. Введіть новий пароль.
  3. Виберіть "Використовувати застарілий пароль"
  4. Запустіть сервер ще раз.
  5. Тепер підключіть MySQL Workbench

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


Це допомогло на OSX
Салам

2
Ця робота, дякую. Я думаю, що це працює, тому що робочий стіл MySQL використовує застаріле шифрування паролів для підключення до сервера БД. Це також можна зробити під час встановлення MySQL та вибору Legacy шифрування замість рекомендованого сильного шифрування паролем.
чернецьSinha

1
У деяких версіях mysql є інша панель налаштування, і це не може працювати
Майкл Ян

8
Реклама для повернення до старої та менш безпечної аутентифікації зовсім не є вдалим рішенням.
Майк Лішке

63
У мене немає системних налаштувань MySQL
JavaRunner

247

ви можете змінити шифрування пароля таким чином.

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

33
Що робити, якщо OP хоче використовувати абсолютно новий класний метод аутентифікації?
LibertyPaul

@twocold, приємний запит сценарію. + 1
Md Haidar Ali Khan

Зауважте, що ваше ім'я користувача та пароль слід додавати до однієї лапки, як показано в коді від @twocold.
матриця

@twocold Як ви "скасовуєте" ПОНІШЕ КОРИСТУВАЧА вище до стандарту 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 не допоможе для мене - але зміни командної строки зробили.
amelvin

Зміна my.ini вирішує мою проблему. Дякую.
Беркант

my.iniрозташування файлу: stackoverflow.com/a/20311286/923560
Абдул

Я просто хочу зазначити, що конфігурація повинна бути виконана на сервері, до якого ви хочете підключитися, а ПОЛІ ПОТРІБНИК працював на мене для підключення з Windows до віддаленого сервера mysql
Alcides

Не обмежується Windows 10
Geza Turi

76

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

ПОЛІ ПОТРІБНИК 'ім'я користувача' @ 'ip_address' ІДЕНТИФІКОВАНО З mysql_native_password BY 'пароль';

АБО

Ми можемо уникнути цієї помилки, змусивши її працювати зі старим модулем пароля:

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

[mysqld]

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

Наразі (на 23.04.2018) вам потрібно завантажити реліз розробки . У GA ті не працюють.

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

Він працював із mysql-workbench-community-8.0.11-rc-winx64.msihttps://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 як корінь

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

Моя установка - продовження 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+ на docker, і в цій ситуації (за необхідності) інші відповіді, надані тут для caching_sha2_passwordпитань типу, спрацьовують. Але секвелпро - це НІ ГО з 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
Дуже дякую, що поділилися цим. Я намагався саме той самий комбо після випадкового видалення свого контейнера Dev MySQL.
martn_st

1
Дуже прикро, що Sequel Pro активно не розвивається більше :( Останні новини від 3 квітня 2016 року, а це вже 2019 рік. Це був найкращий інструмент, який я бачив для дослідника MySQL.
Олексій Шнира

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

Існує рішення, яке може привести SequelPro до роботи, для тих, хто може увійти через командний рядок ( mysqlклієнт) та ALTERїхню таблицю myslq.user, зазначено тут: github.com/sequelpro/sequelpro/isissue/…
Peter W

Якщо ви перебуваєте на MySQL 8 і не хочете , щоб знизити до mysql_native_password, ви можете слідувати цьому: stackoverflow.com/a/56402217/2321594
Aidin

46

Я встановлював MySQL на своєму ПК під керуванням Windows 10 за допомогою " MySQL Web Installer " і стикався з тією ж проблемою, намагаючись підключитися за допомогою MySQL workbench. Я вирішив проблему, переконфігурувавши серверну форму вікна Інсталятора.

MySQL Web Installer - Домашній екран

Натиснувши на опцію "Переконфігурувати", це дозволить перенастроїти сервер. Клацніть на "Далі", поки не досягнете "Метод аутентифікації".

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 подяки
Томас Веббер

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 (ви повинні це зробити після створення нового з'єднання localhost та використання нових облікових даних для початку використання програми).

Налаштуйте нове локальне з'єднання з вказаним вище іменем користувача (рідний користувач), увійдіть за допомогою пароля (new_password)

Зображення

Ввічливість: відповіді на питання UDEMY, на які відповіла команда Career365


Це спрацювало. Чому? Я отримав цю помилку при спробі з'єднатися з rootпаролем і без пароля, який працював у командному рядку, але не в Sequel Pro.
Вольте

працює як шарм, повне співвідношення з питанням Thread Start, і зверніть увагу: у вас повинен бути Mac OS Catalina, docker 19.03, mysql останні зображення, виконання цієї команди $ docker run -p 3306: 3306 -d - ім'я mysql -e MYSQL_ROOT_PASSWORD = пароль mysql / mysql-сервер з веб-сайту dzone.
banzai

13

Для тих, хто використовує Docker або Docker Compose, у мене виникла ця помилка, оскільки я не встановив свою версію зображення MySQL. Docker автоматично спробує отримати останню версію - 8.

Я встановив MySQL на 5.7 і відновив зображення, і воно працювало як нормально:

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

3
Є поважні причини використовувати версію 8 замість версії 5. Я на цій сторінці, тому що я хочу використовувати версію 8 замість версії 5
Зах Сміт

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

13

Це моє визначення databdase в моєму докерному складі:

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 та відкрийте нове з'єднання за допомогою нових облікових даних користувачів.

Я зіткнувся з тим же питанням, і це спрацювало.


9

Ось рішення, яке працювало для мене після встановлення MySQL 8.0 в Windows 10.

Припустимо, ім'я користувача MySQL є, rootа пароль єadmin

Відкрийте командний рядок і введіть такі команди:

cd C: \ програмні файли \ MySQL \ MySQL Server 8.0 \ bin

mysql_upgrade -uroot -padmin

mysql -uroot -padmin

ПОЛІ ПОТРІБНИКА 'root' @ 'localhost' ІДЕНТИФІКОВАНО З mysql_native_password BY 'admin'


8

Якщо ви отримуєте цю помилку на CI GitLab, як я: Просто змініть на останню версію до 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 image mysql: latest (яка була версією 5 і яка працювала чудово), а під час пізнішої збірки остання версія була переведена на версію 8 і припинила роботу . Я змінив своє зображення на mysql: 5 і більше не отримував цієї помилки .


Прямо на голову! Дякую.
brcebn

6

Ця помилка виникає, коли використовуваний інструмент не сумісний з MySQL8, спробуйте оновити до останньої версії MySQL Workbench для MySQL8


5

Майже як відповіді вище, але може бути у простих запитах, я отримував цю помилку у своєму весняному завантажувальному додатку разом зі сплячим режимом після оновлення 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).
Сума немає

3

Хоча це не повинно бути справжнім рішенням, воно працює локально, якщо ви застрягли

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

1
Це вирішує проблему.
kta

2

Наведене нижче рішення працювало для мене введіть тут опис зображення

Перейдіть до Mysql Workbench -> Сервер-> Користувачі та привілеї 1. Клацніть Додати акаунт

2.За вкладкою "Вхід" введіть нові дані та переконайтесь, що виберіть тип автентифікації як стандартний та виберіть відповідні адміністративні ролі та привілеї схеми

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


2

Якщо ви намагаєтесь підключитися до сервера MySQL з текстового клієнта MySQL з іншого комп'ютера (будь то Докер чи ні)

Більшість відповідей тут стосується підключення з настільного клієнта або прохання перейти на більш старий метод аутентифікації. Якщо ви з'єднуєте його з клієнтом MySQL (текстовий), я змусив його працювати з Debian Buster в контейнері Docker.

Скажімо, у вас налаштована система apt та wget, зробіть наступне:

  1. sudo apt-get update
  2. sudo apt-get install lsb-release -y
  3. Завантажте пакунок Debian, який оновлює доречні джерела для вас з веб-сайту 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, що мені допомогло. Або дотримуйтесь методу, опублікованого Santhosh Shivan для Mac OS.


0

Завантаження версії розробки 8.0.11-rc працювала для мене на mac. із такими командами докер:

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

-3

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

Крок 1 - Увімкнути MySQL-сховище

Перш за все, вам потрібно включити реферат спільноти 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.