Não é possível iniciar o mysql: InnoDB: Upgrade após uma falha não é suportada


16

Estou tentando executar o MySQL a partir de uma instalação do Homebrew, mas ele continua falhando ao tentar mysql.server start.

Minhas /usr/local/var/mysql/<name>.local.errleituras são assim e continua enviando essa mensagem de erro a cada poucos segundos.

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

Respostas:


17

Eu tive exatamente os mesmos erros no meu log. Só para entender a resposta nipônica.

Remova todas as versões do MySQL (eu tinha 5.7.21, 5.7.22 e 8.0.11):

brew uninstall --force mysql

Confirme a remoção e o reparo :

brew services list e depois brew doctor

Renomeie o MySQL original :

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

Instale o MySQL mais recente (atualmente 8.0.11):

brew install mysql

Instalação Segura do MySQL :

/usr/local/bin/mysql_secure_installation

Eu recebi este erro inicialmente: Error: Access denied for user 'dbadmin'@'localhost' (using password: YES)

Estou usando uma configuração no nível do usuário. Então, renomeei .my.cnf e executei a instalação segura novamente.

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

Nas instruções de instalação, insiro as seguintes opções Y, 0, Y, N, N, Y, Y.

Atualizar o MySQL Workbench Depois disso, eu ainda não consegui me conectar ao MySQL Workbench (GA 6.3.10), embora parecesse finalmente iniciar o MySQL. Eu estava recebendo o seguinte prompt de erro.

"O plug-in de autenticação 'caching_sha2_password' não pode ser carregado: dlopen (/usr/local/mysql/lib/plugin/caching_sha2_password.so, 2): imagem não encontrada"

Para resolver isso, baixei o MySQL Workbench 8.0.11 rc (a versão de lançamento do desenvolvimento). Usei a GUI para adicionar os usuários que eu tinha antes de aderir às novas regras de senha. Atualizei e renomei ~ / .my.cnf com a senha mais segura. Em seguida, restaurei meus DBs.

Nesse ponto, eu consegui me conectar ao ambiente de trabalho usando o root e a nova senha que configurei durante a instalação segura.

Limpeza (remova o diretório renomeado e seu conteúdo):

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


1
Isso claramente foi respondido pelo pôster original ontem.
JakeGould

4
Talvez já tenha sido respondido automaticamente, mas não com detalhes essenciais para aqueles que procuram os passos exatos necessários.
Sturm

Qual é o objetivo de renomear, em /usr/local/var/mysqlvez de simplesmente removê-lo desde o início? old.mysqlnão é usado em nenhum lugar, exceto durante a etapa de limpeza. Eu pergunto, porque seria útil reinstalar o MySQL, preservando os bancos de dados.
user2763030

A razão pela qual fiz isso foi no caso de eu querer algum dos dados posteriormente. Todos os meus bancos de dados locais eram / são clones do nosso ambiente de produção, por isso não fiz backup de nada e apenas sincronizei tudo após o processo de atualização. Eu acredito que você poderia usar os bancos de dados de versões anteriores, embora o mysql 8 tenha atualizado as regras de criptografia para senhas. Eu sei que você pode adicionar uma linha ao seu .my.cnf para usar o método de autenticação mais antigo, em vez do sha2. Desculpe, não sou super qualificada nessa parte. Eu espero que isso ajude.
Hunter

Se você Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)estiver executando /usr/local/bin/mysql_secure_installation, talvez seja necessário iniciar o servidor MySql como eu fiz. Você pode fazer isso executando "mysql.server start".
Richie Thomas

12

tldr; Uma nova versão do mysql foi instalada via Homebrew. Reverta para a versão instalada anteriormente.

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

A história completa é que você provavelmente instalou uma versão mais recente do mysql brew upgrade. Revise a saída de brew info mysql. Você pode ver mais de uma versão.

No meu caso, vi o seguinte:

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

Eu verifiquei mysql --versione o 8.0.11 mais recente estava sendo executado.

O Homebrew inclui o switchcomando que permite fazer exatamente isso entre os serviços.

Execute isso substituindo a versão pela sua:

brew switch mysql 5.7.17

Reinicie o mysql:

brew services restart mysql

Todos devem voltar a funcionar.


1
Como isso difere no objetivo final da resposta já respondida e auto-respondida ?
JakeGould 29/07/19

4
A resposta 167207 do @JakeGould sugere que você exclua todo o conteúdo do seu banco de dados. Minha resposta sugere usar o brew switchque não.
johnsampson

Justo. Bom conselho. 1
JakeGould 30/07/2018

1
Boa resposta. Trabalhou para mim
Kuppuraj

1
Pena que eu não encontrei isso antes de desinstalar todas as versões do mysql. FML
andrewtweber

3

Parece que o problema foi uma instalação anterior no /usr/local/var/mysql.

Após desinstalar via homebrew, remover /usr/local/var/mysql, executar brew doctore reinstalar via homebrew, o problema foi resolvido.


A remoção /usr/local/var/mysqlremoverá todo o conteúdo do seu banco de dados?
Nicodemuz

@Nicodemuz yup.
Nipponese

6
você provavelmente deve destacar isso como um aviso!
Nicodemuz
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.