Не вдається запустити 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

У моєму журналі були такі самі помилки. Просто для того, щоб створити відповідь Ніпонези.

Видаліть усі версії 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 (версія для версії для розробки). Я використовував GUI, щоб додати користувачів, яких я мав, перш ніж дотримуватися нових правил пароля. Я оновив і перейменував ~ / .my.cnf з більш захищеним паролем. Потім відновив мої БД.

У цей момент мені вдалося з'єднатися з робочим столом за допомогою root та нового пароля, який я встановив під час безпечної установки.

Очищення (видаліть перейменований каталог та його вміст):

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


1
На це явно вже відповіли оригінальні афіші вчора.
JakeGould

4
Можливо, це вже було самовідповіді, але не з такою суттєвою деталлю для тих, хто шукає точні кроки, необхідні.
Штурм

Яка мета перейменування, /usr/local/var/mysqlа не просто його видалення спочатку? old.mysqlне використовується ніде, крім випадків очищення. Я прошу, бо було б корисно перевстановити MySQL при збереженні баз даних.
користувач2763030

Причиною, що я це зробив, було лише на випадок, якщо я захотів отримати будь-які дані згодом. Всі мої локальні бази даних були / є клонами нашого виробничого середовища, тому я нічого не створив, і просто синхронізував це після процесу оновлення. Я вважаю, що ви можете використовувати бази даних з попередніх версій, хоча 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

Усі повинні бути в робочому стані.


1
Чим це відрізняється кінцевою метою від вже самовідповіді та прийнятої відповіді ?
JakeGould

4
@JakeGould Відповідь 167207 пропонує видалити всі матеріали бази даних. Моя відповідь пропонує використовувати, brew switchщо ні.
johnsampson

Досить справедливо. Хороша порада. +1
JakeGould

1
Хороша відповідь. Працював для мене
Куппурай

1
Шкода, що я не знайшов цього, перш ніж я видалив кожну версію mysql. FML
andrewtweber

2

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

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


Чи буде видалення /usr/local/var/mysqlвидалити весь вміст вашої бази даних?
Нікодемуз

@Nicodemuz yup.
ніппонез

7
ви, мабуть, слід виділити це як попередження!
Нікодемуз
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.