Плагин аутентификации caching_sha2_password не может быть загружен
Я соединяю MySQL - 8.0 с MySQL Workbench и получаю следующую ошибку:
Плагин аутентификации caching_sha2_password не может быть загружен: dlopen(/usr/local/mysql/lib/plugin/caching_sha2_password.so, 2): изображение не найдено
Я пробовал и с другим клиентским инструментом.
Любое решение для этого?
39 ответов
Вы можете изменить шифрование пароля пользователя, изменив пользователя с помощью следующей команды 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.
Спасибо
Вы можете изменить шифрование пароля, как это.
ALTER USER 'yourusername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'youpassword';
Примечание: для MAC OS
- Откройте MySQL из Системных настроек> Инициализировать базу данных>
- Введите новый пароль.
- Выберите "Использовать старый пароль"
- Запустите сервер снова.
- Теперь подключите MySQL Workbench
Для 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 следующим образом:
[ТуздЫ]
default_authentication_plugin = mysql_native_password
Перезапустите MySQL Server и снова откройте Workbench.
У меня была та же проблема, но ответ Амана Аггарвала не сработал для меня с контейнером 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';
Вы все готово.
Хорошо, потратил много времени на это, так что вот резюме по состоянию на 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;
В настоящее время (на 2018/04/23) вам необходимо загрузить разрабатываемый выпуск. GA не работают.
Мне не удалось подключиться к последней версии GA (6.3.10).
Работал с mysql-workbench-community-8.0.11-rc-winx64.msi
(из https://dev.mysql.com/downloads/workbench/, вкладка " Релизы для разработчиков").
Примечание: для 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;
Готово!
Я устанавливал MySQL на свой компьютер с Windows 10 с помощью " MySQL Web Installer" и столкнулся с той же проблемой при попытке подключения с использованием MySQL Workbench. Я исправил проблему, перенастроив сервер из окна установщика.
Нажав на опцию "Reconfigure", вы сможете перенастроить сервер. Нажимайте "Далее", пока не достигнете "Метод аутентификации".
На этой вкладке используйте второй параметр "Использовать устаревший метод аутентификации (сохранить совместимость с MySQL 5.x)".
Оставьте все как есть, и вот как я решил свою проблему.
Как это?
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.
Для Windows 10
- Измените файл my.ini в папке ** C: \ ProgramData \ MySQL \ MySQL Server 8.0 **
[mysqld] default_authentication_plugin = mysql_native_password
Перезапустите службу MySQL
войдите в MySQL в командной строке, выполните следующие команды в MySQL
Создать нового пользователя
СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ 'user'@'localhost', ИДЕНТИФИЦИРОВАННОГО 'password';
- Предоставить все привилегии
ПРЕДОСТАВЛЯЙТЕ ВСЕ ПРИВИЛЕГИИ НА * .* TO 'user'@'localhost';
- Откройте MySQL Workbench, откройте новое соединение, используя новые учетные данные пользователя
Я столкнулся с той же проблемой, и это сработало.
Открытый клиент командной строки 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
Хотя это не должно быть реальным решением, оно работает локально, если вы застряли
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';
Если вы все еще хотите использовать новый метод аутентификации, правильное решение — установить
mariadb-connector-c
упаковка. Для Alpine запустите:
apk add mariadb-connector-c
Это добавит недостающее
caching_sha2_password.so
библиотека в
/usr/lib/mariadb/plugin/caching_sha2_password.so
.
Это мое определение базы данных в моем 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 |
+---+
Для тех, кто использует Docker или Docker Compose, я столкнулся с этой ошибкой, потому что я не установил версию своего образа MySQL. Докер автоматически попытается получить последнюю версию, которая является 8.
Я установил MySQL на 5.7 и перестроил образ, и он работал как обычно:
version: '2'
services:
db:
image: mysql:5.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
Вот решение, которое работало для меня после установки 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'
Если вы получаете эту ошибку на 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!)
Откройте мою команду sql:
затем введите пароль MySQL
наконец, используйте:
ALTER USER 'username'@'ip_address' IDENTIFIED WITH mysql_native_password BY 'password';
Благодарю.
Эта ошибка возникает, когда используемый инструмент несовместим с MySQL8, попробуйте обновить до последней версии MySQL Workbench для MySQL8
Для меня это начало происходить, потому что в проекте я использовал образ Docker mysql:latest (который был версии 5 и работал нормально), а во время более поздней сборки последняя версия была переключена на версию 8 и перестала работать. Я изменил свое изображение на mysql: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';
Если вы пытаетесь подключиться к серверу MySQL из текстового клиента MySQL с другого компьютера (будь то Docker или нет)
Большинство ответов здесь включают подключение с настольного клиента или просьбу переключиться на более старый метод аутентификации. Если вы подключаете его с клиентом MySQL (текстовым), я заставлю его работать с Debian Buster в контейнере Docker.
Скажем, у вас настроена система apt и wget, выполните следующие действия:
sudo apt-get update
sudo apt-get install lsb-release -y
- Загрузите пакет Debian, который обновляет apt для вас, с веб-сайта MySQL.
sudo dpkg -i mysql-apt-config_0.8.13-1_all.deb
и выберите нужные параметры. В моем случае мне нужно толькоMySQL Tools & Connectors
быть включенным.sudo apt-get update
sudo apt-get install mysql-client -y
- Готово. Теперь вы можете запустить новый клиент MySQL и подключиться с новым методом аутентификации.
MySQLWorkbench 8.0.11 для macOS решает эту проблему. Я могу установить соединение с защищенным паролем экземпляром mysql, запущенным в Docker.
На самом деле MySql допускает два типа аутентификации во время установки.
- Шифрование пароля
- Устаревшее шифрование
ht tps://stackru.com/images/82bdec24bc4612e2a8826483a56bd227ae40788c.png
Итак, проверив устаревшую аутентификацию, проблема была решена.
Приведенное ниже решение работает для меня
Перейдите в Mysql Workbench -> Сервер-> Пользователи и привилегии. 1.Нажмите Добавить учетную запись.
2.На вкладке "Вход в систему" представлены новые сведения и убедитесь, что в качестве стандарта выбран тип аутентификации, а также соответствующие административные роли и привилегии схемы.
Запускаю докер в M1 (arm64), прямой способ смены в docker bash у меня не работает. Вместо этого я меняю образ mysql на
mysql:8.0.26
и платформа установлена как
linux/x86_64
и добавить
default_authentication_plugin=mysql_native_password
в my.cnf Затем вы перестраиваете свой контейнер.
Попробуйте использовать старый пароль при загрузке и установке MySql, это мне помогло. Или следуйте методу, опубликованному Santhosh Shivan для Mac OS.
Поскольку я не смог найти решение где-либо еще, я опубликую свои выводы здесь. Я смог решить эту проблему, просто выполнив следующий запрос: UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = {username}
Может потребоваться перезагрузка сервера mysql, но в моем случае этого не произошло.