Не удается запустить mysql: InnoDB: обновление после сбоя не поддерживается

16

Я пытаюсь запустить MySQL из установки Homebrew, но при попытке работы происходит сбой mysql.server start.

Мой /usr/local/var/mysql/<name>.local.errчитает как так и продолжает отправлять это сообщение об ошибке каждые несколько секунд.

2018-06-20T20:38:54.6NZ mysqld_safe Logging to '/usr/local/var/mysql/<computer name>.local.err'.
2018-06-20T20:38:54.6NZ mysqld_safe Starting mysqld daemon with databases from /usr/local/var/mysql
2018-06-20T20:38:54.379228Z 0 [System] [MY-010116] [Server] /usr/local/opt/mysql/bin/mysqld (mysqld 8.0.11) starting as process 6271
2018-06-20T20:38:54.383128Z 0 [Warning] [MY-010159] [Server] Setting lower_case_table_names=2 because file system for /usr/local/var/mysql/ is case insensitive
2018-06-20T20:38:54.449869Z 1 [ERROR] [MY-012526] [InnoDB] InnoDB: Upgrade after a crash is not supported. This redo log was created with MySQL 5.7.20. Please follow the instructions at http://dev.mysql.com/doc/refman/8.0/en/upgrading.html
2018-06-20T20:38:54.449947Z 1 [ERROR] [MY-012930] [InnoDB] InnoDB: Plugin initialization aborted with error Generic error.
2018-06-20T20:38:54.919197Z 1 [ERROR] [MY-011013] [Server] Failed to initialize DD Storage Engine.
2018-06-20T20:38:54.919769Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
2018-06-20T20:38:54.919814Z 0 [ERROR] [MY-010119] [Server] Aborting
2018-06-20T20:38:54.920978Z 0 [System] [MY-010910] [Server] /usr/local/opt/mysql/bin/mysqld: Shutdown complete (mysqld 8.0.11)  Homebrew.
2018-06-20T20:38:54.6NZ mysqld_safe mysqld from pid file /usr/local/var/mysql/bae.local.pid ended
японка
источник

Ответы:

17

У меня были точно такие же ошибки в моем журнале. Просто чтобы построить ответ Nipponese.

Удалите все версии MySQL (у меня было 5.7.21, 5.7.22 и 8.0.11):

brew uninstall --force mysql

Подтвердите удаление и ремонт :

brew services list а потом brew doctor

Переименуйте оригинальный MySQL :

mv /usr/local/var/mysql /usr/local/var/old.mysql

Установите последнюю версию MySQL (в настоящее время 8.0.11):

brew install mysql

Безопасная установка MySQL :

/usr/local/bin/mysql_secure_installation

Я изначально получил эту ошибку: Error: Access denied for user 'dbadmin'@'localhost' (using password: YES)

Я использую конфигурацию уровня пользователя. Поэтому я переименовал .my.cnf и снова запустил безопасную установку.

mv /Users/[your username]/.my.cnf /Users/[your username]/old.my.cnf /usr/local/bin/mysql_secure_installation

В подсказках установки я ввожу следующие параметры Y, 0, Y, N, N, Y, Y.

Обновление MySQL Workbench После этого я все еще не мог соединиться с MySQL Workbench (GA 6.3.10), хотя, похоже, он наконец запускал MySQL. Я получаю следующее сообщение об ошибке.

«Плагин аутентификации« caching_sha2_password »не может быть загружен: dlopen (/usr/local/mysql/lib/plugin/caching_sha2_password.so, 2): изображение не найдено»

Для решения этой проблемы я скачал MySQL Workbench 8.0.11 rc (версия для разработчиков). Я использовал графический интерфейс, чтобы добавить пользователей, которых я имел прежде, чем придерживаться новых правил пароля. Я обновил и переименовал ~ / .my.cnf с более безопасным паролем. Затем восстановил мои БД.

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

Очистить (удалить переименованный каталог и его содержимое):

rm -r /usr/local/var/old.mysql

охотник
источник
1
Это было явно уже самоотверженным из оригинального плаката вчера.
JakeGould
4
Возможно, это уже самооценка, но не с такими существенными деталями для тех из нас, кто ищет точные необходимые шаги.
Штурм
Какова цель переименования, /usr/local/var/mysqlа не просто удалить его с самого начала? old.mysqlне используется нигде, кроме как на этапе очистки. Я спрашиваю, потому что было бы полезно переустановить MySQL при сохранении баз данных.
user2763030
Причина, по которой я это сделал, была на тот случай, если мне понадобятся какие-либо данные позже. Все мои локальные базы данных были / являются клонами нашей производственной среды, поэтому я ничего не копировал и просто синхронизировал все после процесса обновления. Я считаю, что вы могли бы использовать базы данных из предыдущих версий, хотя MySQL 8 обновил правила шифрования паролей. Я знаю, что вы можете добавить строку в ваш .my.cnf, чтобы использовать более старый метод auth вместо sha2. Извините, я не супер осведомлен в этой части. Надеюсь, это поможет.
Охотник
Если вы Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)работаете во время работы /usr/local/bin/mysql_secure_installation, вам может понадобиться просто запустить сервер MySql, как я. Вы можете сделать это, запустив «mysql.server start».
Ричи Томас
12

tldr; Новая версия mysql была установлена ​​через Homebrew. Вернитесь к ранее установленной версии.

brew switch mysql X.X.XX` and `brew services restart mysql 

Вся история в том, что вы, вероятно, установили более новую версию MySQL с brew upgrade. Просмотрите вывод brew info mysql. Вы можете увидеть более одной версии.

В моем случае я видел оба следующих:

/usr/local/Cellar/mysql/5.7.17
/usr/local/Cellar/mysql/8.0.11

Я проверил, mysql --versionи новая версия 8.0.11 была запущена.

Homebrew включает в себя switchкоманду, которая позволяет вам делать это только между сервисами.

Выполните это, заменив версию своей собственной:

brew switch mysql 5.7.17

Перезапустите mysql:

brew services restart mysql

Все должно быть в рабочем состоянии.

johnsampson
источник
1
Как это отличается по конечной цели от уже отвеченного и принятого ответа ?
JakeGould
4
@JakeGould Ответ 167207 предлагает вам удалить все содержимое вашей базы данных. Мой ответ предлагает использовать то, brew switchчего нет.
Johnsampson
Справедливо. Хороший совет. +1
JakeGould
1
Хороший ответ. Работал для меня
Kuppuraj
1
Жаль, что я не нашел это, прежде чем я удалил каждую версию MySQL. FML
andrewtweber
3

Я похоже, что проблема была в предыдущей установке в /usr/local/var/mysql.

После удаления с помощью homebrew, удаления /usr/local/var/mysql, запуска brew doctorи переустановки с помощью homebrew проблема исчезла.

японка
источник
Будет ли удаление /usr/local/var/mysqlудалить все содержимое вашей базы данных?
Никодемуз
@Nicodemuz да.
ниппонец
6
Вы, вероятно, должны подчеркнуть это как предупреждение!
Никодемуз