Кто-нибудь знает, когда Homebrew будет обновлен для поддержки первого общего выпуска MySQL 8 (8.0.11)? Кажется, я не могу найти его с помощью поиска, но держу пари, что кто-то знает :)
Он ждет, пока его не объединят в homebrew-core.
Компания Homebrew выпустила MySQL 8.0.11 в качестве обновления вчера (среда, 13 июня 2018 г.). Я думал, что его приколол, но не тут-то было.
Это полная катастрофа:
MySQL 8.0.11 использует caching_sha2_password
в качестве метода аутентификации по умолчанию (оставьте Oracle делать что-то подобное в точечном выпуске, но вот оно и есть).
Пока что он ломает все, что я пробовал: phpMyAdmin, Nextcloud и WordPress.
Я вернусь к 5.7.22 позже сегодня.
Обновление 17 июня 2018 г., 18:50 CDT:
Трехэтапное решение:
Добавьте в раздел [mysqld]
файла my.cnf
(находится в /usr/local/etc/
для установки Homebrew):
default-authentication-plugin=mysql_native_password
В приглашении оболочки:
mysql -u root -p
> ALTER USER 'root'@'localhost'
IDENTIFIED WITH mysql_native_password
BY '[password]';
> exit
Перезагрузить сервер
brew services restart mysql
Обновление 18 июня 2018 г., 23:53 CDT:
Приведенное выше решение в лучшем случае является частичным. По моему опыту, MySQL 8.0.11 еще не готов к использованию в производстве (или даже в разработке).
Полное безумие, что brew выпустила 8.0 как обновление до 5.7.
поскольку версия 8.0 не может быть понижена до версии 5.7 без резервной копии базы данных перед обновлением. Кроме того, обновление не проверяло, может ли моя база данных / таблицы работать под 8.0. как было предложено в сценариях обновления 8.0 dev.mysql.com/doc/refman/8.0/en/upgrading-strategies.htmlmysqlcheck -u root -p --all-databases --check-upgrade
, запустив это, brew может легко увидеть, что моя база данных не может работать на 8.0, до того, как он выполнил обновление.
Мне посчастливилось иметь возможность откатиться и сохранить все свои базы данных нетронутыми с помощью brew remove mysql
и brew install [email protected]
.
У меня не было никакой радости откатиться назад после обновления 8.x, но, к счастью, у меня была резервная копия /usr/local/var/mysql
Time Machine, из которой я смог восстановить. После удаления MySQL 8 (brew remove mysql
) и повторной установки 5.7 (brew install [email protected]
), как указано выше, он снова работает.
Я весь день возился с этим после того, как все взорвалось, когда я обновил Brew. Я не хочу иметь ничего общего с MySQL 8, поэтому я запустил команду brew remove mysql, а затем brew install [email protected], которая вернула мне 5.7, но когда я пытаюсь войти в нее через командную строку с помощью mysql -uroot, я получите следующую ошибку. Это сводит с ума. Есть идеи о том, что здесь может происходить? ОШИБКА 2002 (HY000): не удается подключиться к локальному серверу MySQL через сокет '/tmp/mysql.sock' (2)
После установки [email protected] я не могу запустить клиент mysql. Похоже, что даже при установке старых версий двоичные файлы должны оставаться такими же.
@BeesonBison Не могли бы вы уточнить? У меня есть то, что, как я знал, было рабочим /usr/local/var/mysql
в образе диска, предшествующем обновлению. Вы хотите сказать, что я могу удалить все, что связано с mysql, brew reinstall [email protected]
, а затем скопировать рабочий /usr/local/var/mysql
из образа по тому же пути в моем работающем экземпляре. Я предполагаю, что mysql не может работать во время процесса копирования. Как насчет владения и разрешений как каталога mysql, так и его содержимого.
@JohnD. да, это правильно, просто убедитесь, что вы остановили MySQL перед копированием с образа диска, а затем перезапустите его после этого. Это все, что я сделал. RE: владение, я думаю, это должен быть yourusername:admin
, а chmod 755 должен подходить для разрешений. Я не эксперт в этом, так что кто-нибудь может посоветовать?
@BeesonBison Большое спасибо, очень! Это сработало отлично, и я смог успешно выгружать таблицы. Я полностью удалил все следы MySQL, как самодельные, так и некоторые существующие прямые установки. Я переименовал исходный каталог /usr/local/var/mysql
в mysql-old
, а затем сделал brew install [email protected]
. После запуска и остановки службы я переименовал /usr/local/var/mysql
в mysql-new
, а затем переименовал старый в mysql
. Запуск длился долго, но работал.
Я перестроил все свои базы данных из дампов на предыдущей машине при настройке новой среды с 8.0.11, и откат не был плавным, когда базы данных были созданы с помощью 8.0.11. Пришлось их утилизировать, чтобы получилось 5,7 прокатки.
Просто хотел поблагодарить вас за это, я думал, что схожу с ума, пытаясь заставить это работать должным образом. В качестве еще одного возможного обходного пути, если это не сработает (не совсем уверен, почему, извините), я переключился на использование контейнера докеров для 5.7.24 и не имел проблем, но я бы никогда не поверил, что это то, что Homebrew сделал без ваш ответ здесь. Я перехожу на docker-контейнеры вместо brew, устанавливая вещи везде, где это возможно, в результате это совершенно смешно.
Мне удалось преодолеть это, не удаляя всю мою базу данных, которая из mysql версии 5.7.
Во-первых, просто обновите базу данных с помощью этой команды
mysql_upgrade -u root
https://stackoverflow.com/a/51486493/2342289
Последний. Установите sequel-pro-nightly. Мне это нужно, потому что я могу просматривать свою базу данных с помощью команды, но не с помощью sequal-pro. Так что, к счастью, еженощное сиквел-про работает.
brew cask install sequel-pro-nightly
Тогда бум. Все вернулось. Вздох.
brew install [email protected]
./usr/local
и найдите оттуда папку mysql и копайте, пока не найдете файлы, которые он перечислил.Я остановился на шаге 7, потому что смог взять его оттуда. Надеюсь, ты тоже сможешь.
++ следующее ...