Ошибка подключения Sequel Pro и MySQL

94

Я только что установил 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): изображение не найдено

не могу понять, что мне не хватает

Хаттори Ханзо
источник

Ответы:

182

Это связано с тем, что Sequel Pro еще не готов к новому типу входа в систему, поскольку в сообщении об ошибке указано: драйвер отсутствует. Быстрое исправление для установок, не использующих самодельные версии:

Apple Logo > System Preferences > MySQL > Initialize Database, затем введите новый пароль и выберите «Использовать старый пароль».

После перезагрузки вы сможете подключиться. Делайте это только при свежих установках, иначе вы можете потерять свои таблицы db.

mysql + доморощенный

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

  • Перейдите в файл [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.

Мацей Квас
источник
14
Я не могу найти MySQL в системных настройках
Хаттори Ханзо
2
спасибо за объяснение, но не могу найти my.cnfфайл на моем компьютере (macOS High Sierra 10.13.5)
Хаттори Ханзо
2
Если такого файла нет, вам придется его создать: пожалуйста, посмотрите эту ветку: stackoverflow.com/questions/7973927/…
Maciej Kwas
14
Это отлично сработало при свежем brew install mysqlиспользовании/usr/local/etc/my.cnf
mintwhip
5
Я не использовал пароль, поэтому я использовал ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';- это сработало для меня
Винсент Тан
33

TL; DR: Sequel Pro мертв с 2016 года. Не понижайте версию своей БД из-за инструмента. Перейдите к альтернативному инструменту.

Обновление 2020: Sequel Pro официально мертв, но неофициально жив! Вы можете найти « ночные » сборки, у которых нет этой проблемы (т.е. с поддержкой аутентификации Mysql 8) здесь: https://sequelpro.com/test-builds


Все остальные решения здесь рекомендуют изменить настройки вашей БД (сделав ее менее безопасной, как рекламируется MySQL) для используемого вами инструмента. Для меня это неприемлемо.

Я всегда был большим поклонником Sequel Pro, даже пожертвовал ему. Но, при всей моей страсти и любви, мне очень жаль, если этот инструмент не выпускается с 2016 года . YOLO, а мне нужно двигаться дальше!

Альтернатива, которую я нашел (из https://stackoverflow.com/a/55235533/2321594 , благодаря @arcseldon), - это DBeaver, который поддерживает новый метод аутентификации MySQL 8 (не устаревший).

PS. Единственный трюк на стороне инструмента, а не на стороне БД, заключается в том, что при создании соединения MySQL 8 вам может потребоваться перейти в «Свойства драйвера» (позже его можно найти в Редактировать соединение) и установить значение allowPublicKeyRetrievalна true.

Мне это нужно, чтобы подключиться к моему контейнеру MySQL, созданному с помощью Docker. Чтобы IP MySQL был виден извне для любого другого приложения в вашей экосистеме (не только для этого инструмента), вы должны либо создать нового пользователя в MySQL, либо передать его -e MYSQL_ROOT_HOST=%во время выполнения или как ENV.

Помощь в
источник
Я считаю, что @Aidin вы дали мне отрицательный голос только потому, что мой ответ не решает проблему OP. Это всего лишь локальная разработка и локальные настройки - так в чем смысл? Неужели мне действительно нужно отказываться от программного обеспечения, с которым я знаком и с которым мне нравится работать, только потому, что вы так говорите?
Maciej
5
Пожалуйста, не принимайте это на свой счет @MaciejKwas. Несмотря на то, что я предоставил здесь больше объяснений, что я ценю, я все же поддерживаю свой голос. Три основных причины: 1) В современной разработке программного обеспечения не рекомендуется поддерживать разные настройки между dev / prod. Фактически, это фактор X 12factor.net/dev-prod-parity . 2) Люди также могут использовать эти инструменты для проверки продукции. Вы можете создать ssh-туннель / прокси и получить доступ к своей базе данных через графический интерфейс. В таких случаях переход на более раннюю версию аутентификации БД невозможен. 3) Отсутствие адаптации к изменениям и обновлению - это то, что я лично не ценю.
Aidin
1
Я возвращаюсь к проекту MySQL, который я не запускал локально пару лет, потому что он был твердым, и мне так грустно узнать, что сиквел Pro мертв :(
Catfish
Также выберите драйвер MySQL +8 в DBeaver, так как есть несколько драйверов на выбор. В свойствах драйвера установите для параметра allowPublicKeyRetrieval значение true и сохраните.
Peheje,
18
  1. Предполагая, что у вас нет конфигурации mysql , повторите следующее, чтобы~/.my.conf
[mysqld]
default-authentication-plugin=mysql_native_password
  1. Войдите в mysql с помощьюmysql -u root -p
  2. Установите пароль пользователя root, ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '[PASSWORD]';где [PASSWORD]- пароль по вашему выбору.
  3. Перезапустите mysql, например,brew services restart mysql
Илиас Карим
источник
7

Sequel Pro официально мертв и больше не поддерживает новые функции MySql. Однако хорошей новостью является то, что он был заменен на Sequel Ace, доступный на GitHub и в магазине приложений . Приложение бесплатное и выглядит как официальная замена Sequel Pro, так как сообщение было сделано одним из сотрудников Sequel Pro .

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

Александр Кучерюк
источник
Спасибо за новости, очень признательны.
Хаттори Ханзо,
В заключение! Ждал какое-то время.
Джонни
6

Если вы подключаетесь к MySQL через root@127.0.0.1, не забудьте сбросить и его пароль!

ALTER USER 'root'@'127.0.0.1' ИДЕНТИФИЦИРОВАН mysql_native_password BY '[пароль]';

Ксено
источник
Я получаю:ERROR 3009 (HY000): Column count of mysql.user is wrong. Expected 50, found 49. Created with MySQL 80012, now running 80013. Please use mysql_upgrade to fix this error.
Chance Smith
попробуйте это на терминале: mysql_upgrade --force -uroot -p
Xeno
mysql_upgrade устарел и не будет работать, используйте вместо него mysqld --upgrade = FORCE.
ilovecookiez11
1

Если кто сталкивался с этой проблемой и устанавливал MySQL version >8через .dmgскачивание по официальной ссылке. В таком случае воспользуйтесь этим руководством .

Амрендра
источник
1
У меня сработало использование старого пароля. Спасибо!
Ричард Уизерспун,
1

У меня это работает. если вы получаете эту ошибку:

Невозможно подключиться к хосту 127.0.0.1, или истекло время ожидания запроса.

Убедитесь, что адрес правильный и у вас есть необходимые привилегии, или попробуйте увеличить время ожидания соединения (в настоящее время 10 секунд).

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

Пожалуйста, попробуйте это решение

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

Голам Сорвар
источник
Работал как шарм.
Джимми Адаро