Я подключаю MySQL - 8.0 к MySQL Workbench и получаю следующую ошибку:
Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen(/usr/local/mysql/lib/plugin/caching_sha2_password.so, 2): image not found
Я пробовал и с другим клиентским инструментом.
Любое решение для этого?
Верно, MySQL Workbench нуждается в обновлении коннектора, чтобы иметь возможность работать с кэшированными паролями sha2 (скоро).
@RaymondNijland, как это настроить?
Я установил логин по умолчанию на собственный и перезапущен, проблема сохраняется, и я не могу войти в систему, чтобы создать нового пользователя. Удивительно, что в 2018 году установка Mysql и workbench не закончилась. Низкий контроль качества.
@AmanAggarwal MySql Workbench имеет новую версию, совместимую с MySQL 8.0. Это RC, но я не делаю исключений, он отлично смотрится =).
@MikeLischke Поскольку я просто читать, caching_sha2_password не доступен отдельно, потому что он статически связан в libmysql.dll. Это очень хорошо для крупного обновления, мне только интересно, почему есть только 64-битная версия libmysql, а для 32-битной нет? Действительно ли Oracle отказалась от 32-битных серверных систем?
Не знаю, откуда у вас такое впечатление, что 32-битной клиентской библиотеки mysql больше не будет, но это неправда. Верно то, что MySQL Workbench больше не поставляется с 32-битной версией.
На mysql.com просто нет возможности скачать 32-битную версию. Если вы говорите, что это неправильно, возможно, мне нужно запустить установщик на 32-битной Windows, чтобы получить его. Не уверен, где я его беру в противном случае.
Просто попытался установить на 32-битную Windows 7, тогда установщик говорит, что он содержит только 64-битный сервер, а не 32-битную версию.
Те ответы, которые предлагают использовать более слабое шифрование, - неправильный путь. Используйте другие клиенты, например tableplus.






Вы можете изменить шифрование пароля пользователя, изменив пользователя с помощью следующей команды Alter:
ALTER USER 'username'@'ip_address' IDENTIFIED WITH mysql_native_password BY 'password';
ИЛИ ЖЕ
Мы можем избежать этой ошибки, заставив ее работать с плагином старого пароля:
Сначала измените плагин аутентификации в файл 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.
Спасибо
Однозначно это не решение проблемы с отсутствующим плагином.
Это. Проблема в том, что программное обеспечение для управления БД с этим пока не справляется. Так что, если вы не являетесь разработчиком рабочей среды mysql, на данный момент это ваш обходной путь.
Работал у меня. Спасибо
Часть о создании нового пользователя после добавления флага конфигурации имеет решающее значение.
вы можете изменить шифрование пароля вот так.
ALTER USER 'yourusername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'youpassword';
Что, если OP захочет использовать новый крутой метод аутентификации?
@twocold Как вы «отмените» указанное выше ALTER USER и вернетесь к стандарту MySQL 8.0 (новый уровень шифрования) после того, как вы это сделаете, и это не сработает?
@LibertyPaul, что это за новый классный метод аутентификации, который ломает все? Есть ссылка или термин, который я могу погуглить?
Это сработало. Спасибо чувак. ALTER USER 'root' @ 'localhost' ИДЕНТИФИЦИРОВАН mysql_native_password BY 'root';
Кто-то еще упомянул о добавлении этого default_authentication_plugin=mysql_native_password в конфигурацию, но у меня это не сработало. Использование оператора ALTER сработало. Спасибо! :)
Если это имеет смысл, вы можете подумать о создании специального пользователя для MySQL Workbench (с загадочным именем пользователя и паролем и минимальными разрешениями, предоставленными для таблицы) и использовать его для подключения к базе данных с помощью инструмента. Вы можете уменьшить поверхность подключения для использования менее безопасной аутентификации. Когда установка Workbench / MySQL начнет поддерживать новый метод аутентификации, вы можете удалить этого пользователя.
Мне пришлось изменить localhost на "%". Это позволяет удаленно подключаться к root. ALTER USER 'root' @ '%' ИДЕНТИФИЦИРОВАН mysql_native_password BY 'mypasswrd';
Это хороший подход для других клиентов, поскольку они могут не поддерживать новый метод аутентификации из MySQL 8.
Это решение. У меня это сработало.
спасибо большое, брат
[в 2021 году] Я только что набрал строку кода, и я отлично работал! Благодарность!! @twocold
как это?
docker run -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -d mysql --default-authentication-plugin=mysql_native_password
mysql -uroot --protocol tcp
https://github.com/GitHub30/docs/blob/change-default_authentication_plugin/mysql/stack.yml
или вы должны использовать MySQL Workbench 8.0.11.
добавление --default-authentication-plugin = mysql_native_password работает как шарм <3 спасибо
Примечание: для MAC OS

Это помогло на OSX
Эта работа, спасибо. Я думаю, это работает, потому что рабочая среда MySQL использует устаревшее шифрование паролей для подключения к серверу БД. Это также можно сделать при установке MySQL и выборе устаревшего шифрования вместо рекомендованного надежного шифрования пароля.
Некоторые версии mysql имеют другую панель настроек, и это не может работать
Реклама возврата к старой и менее безопасной аутентификации - это вообще хорошее решение нет.
У меня нет MySQL в системных настройках
Вы можете настроить MySQL в системных настройках, выполнив следующие действия: dev.mysql.com/doc/refman/5.7/en/osx-installation-prefpane.ht мл
Спасибо за подсказку! Я бы никогда не понял этого, не потратив на это много времени. :)
это сработало. У меня был установлен старый верстак mysql. Благодарю.
Есть какие-нибудь изменения на этом фронте? Возможно ли сейчас, в конце 2020 года, использовать MariaDb для подключения к MySQL без использования устаревшей системы безопасности?
Итак, это, вероятно, моя собственная глупая ошибка в том, что я не читал / не верил в мелкий шрифт, но я попробовал это решение, и оно не только не сработало, но и стерло данные в моем экземпляре: «Если каталог данных уже существует, он будет удалено "
В настоящее время (23.04.2018) вам необходимо загрузить файл выпуск разработки. GA не работают.
Мне не удалось подключиться с последней версией GA (6.3.10).
Работало с mysql-workbench-community-8.0.11-rc-winx64.msi (из https://dev.mysql.com/downloads/workbench/, вкладка Релизы в разработке).
На самом деле это правильный ответ: MySQL 8.0 требует MySQL Workbench 8.0, которая, к сожалению, все еще находится в бета-режиме. Но после установки вы можете использовать новое шифрование паролей SHA, ничего менять не нужно.
Не бета-версия, а релиз-кандидат (RC). Версия GA (общедоступная) скоро появится.
Лучшая идея для меня.
Это все еще актуально. Установка версии GA по-прежнему приводит к невозможности входа в систему с использованием рекомендованного шифрования пароля. Нет предупреждения о том, что версия GA работает только с устаревшей аутентификацией.
По крайней мере, в MacOS версия GA в настоящее время - 8.0.12 (2018/08/13) и решает проблему! Спасибо!
Для Windows 10,
Изменить файл my.ini в C:\ProgramData\MySQL\MySQL Server 8.0\
[mysqld]
default_authentication_plugin=mysql_native_password
Перезапустите службу MySQL.
Войдите в MySQL из командной строки и выполните следующие команды в MySQL:
Создайте нового пользователя.
CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
Даруй все привилегии.
GRANT ALL PRIVILEGES ON * .* TO 'user'@'localhost';
Откройте рабочую среду MySQL и откройте новое соединение, используя новые учетные данные пользователя.
Я столкнулся с той же проблемой, и это сработало.
Если вы получаете эту ошибку в GitLab C, мне нравится: Просто смените последнюю версию на 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!)
Откройте клиент командной строки 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';
Установите новое соединение с локальным хостом с указанным выше именем пользователя (собственный пользователь), войдите в систему, используя пароль (новый_пароль)
Предоставлено: ответы на часто задаваемые вопросы UDEMY от команды Career365
Это сработало. Почему? Я получил эту ошибку при попытке подключиться к root и без пароля, которая работала в командной строке, но не в Sequel Pro.
работают как шарм, полная корреляция с вопросом о запуске потока и обратите внимание: у вас должна быть Mac os Catalina, docker 19.03, последние образы mysql, выполнение этой команды $ docker run -p 3306: 3306 -d --name mysql -e MYSQL_ROOT_PASSWORD = password mysql / mysql-server с сайта dzone.
У меня была та же проблема, но ответ Амана Аггарвала не сработал для меня с контейнером 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';
Все готово.
Похоже, это может быть хорошим ответом на то, что я ищу. Но я не знаю, что это такое. ты имеешь ввиду принятый ответ? или другой ...
Да @ZachSmith, «это» относится к принятому ответу.
Как насчет docker exec -it CONTAINER_ID mysql --user=root --password вместо двух команд, которые зависят от наличия оболочки bash (что неизвестно в будущем)?
Это не работало с sequelpro 1.1.2 с использованием рабочего стола Docker 2.0.3.0 (mac). все команды работают, но ошибки sequel pro при входе в систему - с использованием mysql: latest (v8.0.15)
Как сообщали другие, использование mysql 5.7 ничего не требует: docker run -p 3306:3306 --name mysql1 -e MYSQL_ROOT_PASSWORD=secret -d mysql:5.7
Много истории с этой проблемой - github.com/sequelpro/sequelpro/issues/2699
это решило мою проблему, но на следующий день она снова появилась. Я не знаю почему, но если я закрою базу данных и перезапущу ее, мне нужно снова изменить пользователя ...
Для 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 и снова откройте Workbench.
Изменение my.ini не сработало бы для меня, но изменение командной строки сработало.
Расположение файла my.ini: stackoverflow.com/a/20311286/923560
Я просто хочу отметить, что конфигурация должна выполняться на сервере, к которому вы хотите подключиться, и ALTER USER работал на меня, чтобы подключиться из Windows к удаленному серверу mysql.
Не ограничивается Windows 10
Для тех, кто использует Docker или Docker Compose, я столкнулся с этой ошибкой, потому что я не установил свою версию образа MySQL. Docker автоматически попытается получить последнюю версию - 8.
Я установил MySQL на 5.7 и перестроил образ, и он работал как обычно:
version: '2'
services:
db:
image: mysql:5.7
Есть веские причины использовать версию 8 вместо версии 5. Я на этой странице, потому что хочу использовать версию 8 вместо версии 5.
использование mysql:5.7 вместо mysql:latest решило проблему для меня
MySQLWorkbench 8.0.11 для macOS решает эту проблему. Я могу установить соединение с защищенным паролем root экземпляром mysql, запущенным в докере.
Это то, что исправило это для меня. Я использовал старую версию MySQL Workbench 6.3 с сервером 8.0. Хотя многие ответы здесь говорят о понижении совместимости с сервером, я просто обновил свою версию Workbench до последней версии 8.0 (в настоящее время 8.0.15).
Это мое определение базы данных в моем 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 |
+---+
Почти как ответы выше, но могут быть в простых запросах, я получал эту ошибку в своем приложении весенней загрузки вместе со спящим режимом после обновления 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';
Вот решение, которое сработало для меня после установки 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' IDENTIFIED WITH mysql_native_password BY 'admin'
Я устанавливал MySQL на свой ПК с Windows 10, используя «Веб-установщик MySQL», и столкнулся с той же проблемой при попытке подключиться с помощью рабочей среды MySQL. Я исправил проблему, перенастроив сервер из окна установщика.
Нажав на опцию «Перенастроить», вы сможете перенастроить сервер. Нажимайте «Далее», пока не дойдете до «Метод аутентификации».
На этой вкладке используйте вторую опцию «Использовать устаревший метод аутентификации (сохранить совместимость с MySQL 5.x)».
Оставьте все остальное как есть, и именно так я решил свою проблему.
Я вручную разархивирую 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.
Откройте мою командную строку sql:
затем введите пароль mysql
наконец используйте:
ALTER USER 'username'@'ip_address' IDENTIFIED WITH mysql_native_password BY 'password';
см .: https://stackoverflow.com/a/49228443/6097074
Спасибо.
Загрузка разрабатываемой версии 8.0.11-rc у меня сработала на Mac. со следующими командами докера:
docker run --name mysql -p 3406:3306 -e MYSQL_ROOT_PASSWORD=mypassword -d mysql
Для меня это началось, потому что в проекте я использовал образ Docker mysql: latest (который был версией 5 и работал нормально), а во время более поздней сборки последняя версия была переключена на версию 8, и перестал работать. Я изменил мое изображение на mysql: 5 и я был больше не получаю эту ошибку.
Прямо по голове! Спасибо.
Приведенное ниже решение сработало для меня

Перейдите в Mysql Workbench -> Сервер-> Пользователи и привилегии. 1.Нажмите Добавить учетную запись.
2. На вкладке «Вход в систему» введите новые сведения и убедитесь, что в качестве типа аутентификации выбрано стандарт, а также выберите соответствующие административные роли и привилегии схемы.
Я решил эту проблему, установив MySQL 5.7:
Прежде всего, вам необходимо включить в вашей системе репозиторий yum, выпущенный сообществом MySQL 5.7. Пакеты rpm для конфигурации репозитория yum доступны на официальном сайте MySQL. Используйте одну из следующих команд в соответствии с версией вашей операционной системы.
yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
yum localinstall https://dev.mysql.com/get/mysql57-community-release-el6-9.noarch.rpm
dnf install https://dev.mysql.com/get/mysql57-community-release-fc27-9.noarch.rpm
dnf install https://dev.mysql.com/get/mysql57-community-release-fc26-9.noarch.rpm
dnf install https://dev.mysql.com/get/mysql57-community-release-fc25-9.noarch.rpm
Поскольку вы успешно включили репозиторий MySQL yum в своей системе. Теперь установите сервер сообщества MySQL 5.7, используя следующие команды в соответствии с версией вашей операционной системы.
yum install mysql-community-server
dnf install mysql-community-server
источник: https://tecadmin.net/install-mysql-5-7-centos-rhel/
Откат к предыдущим установкам (MySQL Community Server 5.7 и Workbench 6.1) и установка новых учетных данных MySQL сработали для меня!
Хорошо, потратил много времени на это, так что вот сводка по состоянию на 19 марта 2019 г.
Если вы специально пытаетесь использовать образ Docker с MySql 8+, а затем используете SequelPro для доступа к своим базам данных, работающим в этом контейнере докеров, вам не повезло.
Моя установка - sequelpro 1.1.2 с использованием рабочего стола докера 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, работают. Но с MySql 8+ sequelpro НЕ ПРОХОДИТ
Наконец, я отказался от 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;
Большое спасибо за то, что поделились этим. Я пробовал ту же самую комбинацию после случайного удаления моего контейнера MySQL dev.
Очень грустно, что Sequel Pro больше не активно развивается :( Последние новости датированы 3 апреля 2016 года, а это уже 2019 год. Это был лучший инструмент, который я видел для MySQL Explorer.
@OleksiiShnyra: правда, серийных выпусков не было несколько лет, но, к вашему сведению, доступны более новые «ночные» выпуски. sequelpro.com/test-builds и через brew cask install homebrew/cask-versions/sequel-pro-nightly.
Существует обходной путь, который может заставить SequelPro работать, для тех, кто может войти в систему через командную строку (клиент mysql) и ALTER, свою таблицу myslq.user, отмеченную здесь: github.com/sequelpro/sequelpro/issues/…
Если вы используете MySQL 8 и не хотите переходить на mysql_native_password, вы можете выполнить следующее: stackoverflow.com/a/56402217/2321594
Эта ошибка возникает, когда используемый инструмент несовместим с MySQL8, попробуйте обновить до последней версии MySQL Workbench для MySQL8.
я нашел это
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.
Если вы пытаетесь подключиться к серверу MySQL из текстового клиента MySQL с другого компьютера (будь то Docker или нет)
Большинство ответов здесь связаны с подключением с настольного клиента или с просьбой переключиться на более старый метод аутентификации. Если вы подключаете его к клиенту MySQL (текстовому), я заставил его работать с Debian Buster в контейнере Docker.
Допустим, у вас есть система apt и настроен wget, выполните следующие действия:
sudo apt-get updatesudo apt-get install lsb-release -ysudo dpkg -i mysql-apt-config_0.8.13-1_all.deb и выберите нужные параметры. В моем случае мне нужно только включить MySQL Tools & Connectors.sudo apt-get updatesudo apt-get install mysql-client -yЭто был правильный ответ на проблемы WSL, спасибо!
Попробуйте использовать старый пароль при загрузке и установке MySql, это мне помогло. Или следуйте методу, опубликованному Santhosh Shivan для Mac OS.
Хотя это не должно быть настоящий решение, оно работает локально, если вы застряли
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';
На самом деле MySql допускает два типа аутентификации во время установки.
Итак, проверив устаревшую аутентификацию, проблема была решена.
Примечание: для Linux (Debian, Ubuntu, Mint)
У меня такая ошибка:
MySQL Error Message: Plugin caching_sha2_password could not be loaded: /usr/lib/x86_64-linux-gnu/mariadb19/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory
Я решил с помощью следующих шагов:
Введите в консоли mysql: $ mysql -u root -p, если у вас нет пароля для пользователя root, тогда:
Используйте mysql db: mysql> use mysql;
Измените своего пользователя для решения проблемы: mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Выход ... mysql> quit;
Сделанный!
Не работает в MacOS, пароль обновляется, и я могу подключаться к контейнеру и использовать mysql, но не могу подключиться к базе данных извне.
это решило мою ошибку. Спасибо
Вы только что включили устаревшую парольную аутентификацию. Не лучшее решение.
Я столкнулся с проблемой на ubuntu, и это решение отлично работает. Спасибо
Просто скачали последнюю версию mysqlworkbench, совместимую с последней версией шифрования:
https://downloads.mysql.com/archives/workbench/
Примечание. На Mac big Sur две последние версии: 8.0.22 и 8.0.23 содержат ошибки и не работают.
Используйте 8.0.21, пока они не будут исправлены
Вы можете решить эту проблему, если сконфигурируете MySQL 8.0 для работы в режиме mysql_native_password.