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

4610
nipponese

Я пытаюсь запустить 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 
8

3 ответа на вопрос

9
Hunter

У меня были такие же ошибки в моем журнале. Просто чтобы построить ответ 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

Это было ясно [уже ответил сам] (https://superuser.com/a/1332979/167207) от оригинального плаката вчера. JakeGould 6 лет назад 1
Возможно, это уже самооценка, но не с такими существенными деталями для тех из нас, кто ищет точные необходимые шаги. Sturm 6 лет назад 3
Какова цель переименования `/ usr / local / var / mysql` вместо простого удаления его с самого начала? `old.mysql` не используется нигде, кроме как на этапе очистки. Я спрашиваю, потому что было бы полезно переустановить MySQL, сохраняя базы данных. user2763030 6 лет назад 0
Причина, по которой я это сделал, была на тот случай, если мне понадобятся какие-либо данные позже. Все мои локальные базы данных были / являются клонами нашей производственной среды, поэтому я ничего не копировал и просто синхронизировал все после процесса обновления. Я считаю, что вы могли бы использовать базы данных из предыдущих версий, хотя MySQL 8 обновил правила шифрования паролей. Я знаю, что вы можете добавить строку в ваш .my.cnf, чтобы использовать более старый метод auth вместо sha2. Извините, я не очень осведомлен в этой части. Надеюсь, это поможет. Hunter 6 лет назад 0
8
johnsampson

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 

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

Как это отличается по конечной цели от [уже отвеченного и принятого ответа] (https://superuser.com/a/1332979/167207)? JakeGould 6 лет назад 1
@JakeGould Answer [167207] (https://superuser.com/a/1332979/167207) предлагает вам удалить все содержимое базы данных. Мой ответ предлагает использовать `brew switch`, который не делает. johnsampson 6 лет назад 3
Справедливо. Хороший совет. +1 JakeGould 6 лет назад 0
Хороший ответ. Работал для меня rajkuppus 6 лет назад 0
3
nipponese

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

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

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