Не удалось выполнить соединение Sequel Pro и MySQL
Я только что установил mysql на mac из Homebrew
brew install mysql
mysql -V
mysql Ver 8.0.11 for osx10.13 on x86_64 (Homebrew)
от терминала он работает, и я могу войти в mysql, но из Sequel Pro это говорит
Не удалось подключиться к узлу 127.0.0.1 или время ожидания запроса.
Убедитесь, что адрес верен и у вас есть необходимые привилегии, или попробуйте увеличить время ожидания подключения (в настоящее время 10 секунд).
MySQL сказал: плагин аутентификации 'caching_sha2_password' не может быть загружен: dlopen (/usr/local/lib/plugin/caching_sha2_password.so, 2): изображение не найдено
не могу понять, что мне не хватает
Ответы
Ответ 1
Это связано с тем, что Sequel Pro еще не готов к новому виду входа в систему, поскольку в сообщении об ошибке указано, что драйвера нет. Быстрое исправление для инсталляций, отличных от доморощенных:
Apple Logo > System Preferences > MySQL > Initialize Database
, затем введите новый пароль и выберите "Использовать старый пароль"
После перезагрузки вы сможете подключиться. Делайте это только при новой установке, иначе вы можете потерять свои таблицы БД.
mysql + homebrew
В основном вам придется выполнять некоторые действия вручную, however- данные вашей базы данных не будут удалены, как в приведенном выше решении
Перейдите в файл [my.cnf] [1] и в разделе [mysqld]
добавьте строку:
default-authentication-plugin=mysql_native_password
Войдите на сервер MySQL через терминал: запустите mysql -u root -p
, затем внутри оболочки выполните эту команду (заменив [пароль] вашим реальным паролем):
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '[password]';
выйдите из оболочки mysql с помощью exit
и запустите brew services restart mysql
.
Должно работать.
my.cnf
Файл my.cnf находится в /etc/my.cnf в Unix/Linux
Ответ 2
- Предполагая, что у вас нет конфигурации mysql,
~/.my.conf
следующее в ~/.my.conf
:
[mysqld]
default-authentication-plugin=mysql_native_password
- Войдите в mysql с помощью
mysql -u root -p
- Установите пароль пользователя root с помощью команды
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '[PASSWORD]';
где [PASSWORD]
- это пароль по вашему выбору. - Перезапустите MySQL с помощью, например,
brew services restart mysql
Ответ 3
TL; DR: Sequel Pro не работает с 2016 года. Не понижайте вашу БД из-за инструмента. Перейдите к альтернативному инструменту.
Все остальные решения здесь рекомендуют изменить настройки вашей БД (делая ее менее защищенной, как рекламируется MySQL) для используемого вами инструмента. Это не приемлемо для меня.
Я всегда был большим поклонником Sequel Pro, даже пожертвовал ему. Но, со всей моей страстью и любовью, мне жаль, если у этого инструмента нет релиза с 2016 года. ЙОЛО, и мне нужно двигаться дальше!
Альтернатива, которую я нашел (из fooobar.com/questions/2461051/..., благодаря @arcseldon), - это DBeaver, который поддерживает новый метод аутентификации (не устаревший) MySQL 8.
PS. Единственная хитрость на стороне инструмента, а не на стороне БД, заключается в том, что при создании соединения MySQL 8 вам может потребоваться перейти в "Свойства драйвера" (позже можно найти в "Редактировать соединение") и повернуть значение от allowPublicKeyRetrieval
до true
.
Мне нужно было это подключиться к моему контейнеру MySQL, созданному с помощью Docker. Чтобы IP MySQL был виден извне, для любого другого приложения в вашей экосистеме (не только для этого инструмента) вы должны либо создать нового пользователя в MySQL, либо передать -e MYSQL_ROOT_HOST=%
во время выполнения или в качестве ENV ,
Ответ 4
Если вы подключаетесь к MySQL через [email protected], убедитесь, что вы также сбросили его пароль!
ALTER USER 'root'@'127.0.0.1' ИДЕНТИФИЦИРОВАНО С mysql_native_password BY '[пароль]';