Mysql başlatılamıyor: InnoDB: Bir kilitlenme desteklenmezse yükseltme


16

MySQL'i bir Homebrew kurulumundan çalıştırmaya çalışıyorum, ancak denerken başarısız oluyor mysql.server start.

Benim bu şekilde /usr/local/var/mysql/<name>.local.errokuyor ve bu hata mesajını birkaç saniyede bir göndermeye devam ediyor.

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

Yanıtlar:


17

Günlüğümde tamamen aynı hatalar vardı. Nipponese'nin cevabını oluşturmak için.

MySQL tüm sürümlerini kaldırın (I 8.0.11, 5.7.22 5.7.21 vardı ve):

brew uninstall --force mysql

Kaldırma ve Onarmayı Onaylayın :

brew services list ve sonra brew doctor

Orijinal MySQL'i yeniden adlandırın :

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

En son MySQL'i yükleyin (şu anda 8.0.11):

brew install mysql

MySQL Güvenli Kurulum :

/usr/local/bin/mysql_secure_installation

Başlangıçta bu hatayı aldım: Error: Access denied for user 'dbadmin'@'localhost' (using password: YES)

Kullanıcı düzeyinde bir yapılandırma kullanıyorum. Bu yüzden .my.cnf adını değiştirdim ve güvenli yüklemeyi tekrar çalıştırdım.

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

Yükleme istemlerinde aşağıdaki seçenekleri girdim Y, 0, Y, N, N, Y, Y.

MySQL Workbench'i Yükseltme Bundan sonra MySQL Workbench (GA 6.3.10) ile bağlantı kuramadım, ancak sonunda MySQL başlatılıyor gibi görünüyordu. Aşağıdaki hata istemini alıyordum.

"'Caching_sha2_password' kimlik doğrulama eklentisi yüklenemiyor: dlopen (/usr/local/mysql/lib/plugin/caching_sha2_password.so, 2): resim bulunamadı"

Bu sorunu çözmek için MySQL Workbench 8.0.11 rc'yi (Geliştirme Sürümü sürümü) indirdim. GUI'yi yeni şifre kurallarına uymadan önce sahip olduğum kullanıcıları eklemek için kullandım. ~ / .My.cnf dosyasını daha güvenli bir parola ile güncelledim ve yeniden adlandırdım. Sonra DB'lerimi geri yükledim.

Bu noktada, güvenli kurulum sırasında kök ve kurduğum yeni şifreyi kullanarak tezgahla bağlantı kurabildim.

Temizle (yeniden adlandırılan dizini ve içeriğini kaldır):

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


1
Bu, dün orijinal poster tarafından zaten kendi kendine cevaplandı .
JakeGould

4
Belki zaten kendi kendine cevap verilmişti, ancak tam olarak gerekli adımları arayanlar için bu kadar önemli bir detayla değil.
Sturm

/usr/local/var/mysqlBaşlangıçta kaldırmak yerine yeniden adlandırmanın amacı nedir ? old.mysqltemizleme adımı dışında hiçbir yerde kullanılmaz. Soruyorum çünkü veritabanlarını korurken MySQL'i yeniden yüklemek yararlı olacaktır.
user2763030

Bunu yapmamın nedeni, daha sonra herhangi bir veriyi istememdi. Tüm yerel veritabanlarım üretim ortamımızın klonlarıydı / bunlardı, bu yüzden hiçbir şeyi yedeklemedim ve yükseltme işleminden sonra hepsini senkronize ettim. Önceki sürümlerden veritabanlarını kullanabileceğinize inanıyorum, ancak mysql 8 parolalar için şifreleme kurallarını güncelledi. Sha2 yerine eski kimlik doğrulama yöntemini kullanmak için .my.cnf dosyasına bir satır ekleyebileceğinizi biliyorum. Üzgünüm bu konuda çok bilgili değilim. Umarım bu yardımcı olur.
Hunter

Eğer alırsanız Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)çalışırken /usr/local/bin/mysql_secure_installation, sen benim yaptığım gibi sadece MySQL sunucusunu başlatmak gerekebilir. Bunu "mysql.server start" komutunu çalıştırarak yapabilirsiniz.
Richie Thomas

12

TLDR; Homebrew aracılığıyla yeni bir mysql sürümü kuruldu. Önceden yüklenmiş sürüme geri dönün.

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

Tam hikaye, muhtemelen mysql'ın daha yeni bir sürümünü yüklediniz brew upgrade. Çıktısını gözden geçirin brew info mysql. Birden fazla sürüm görebilirsiniz.

Benim durumumda, aşağıdakilerin ikisini de gördüm:

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

Kontrol ettim mysql --versionve daha yeni 8.0.11 çalışıyordu.

Homebrew, switchservisler arasında bunu yapmanıza izin veren komutu içerir .

Sürümü kendinizinkilerle değiştirin:

brew switch mysql 5.7.17

MySQL'i yeniden başlat:

brew services restart mysql

Her şey tekrar çalışır durumda olmalıdır.


1
Bu, nihai amaçta zaten cevaplanmış ve kabul edilmiş cevaptan nasıl farklıdır ?
JakeGould

4
@JakeGould Cevap 167207 , tüm veritabanı içeriğinizi silmenizi önerir. Cevabım brew switchhangisinin kullanmadığını gösteriyor .
johnsampson

Yeterince adil. İyi tavsiye. +1
JakeGould

1
İyi cevap. Benim için çalıştı
Kuppuraj

1
MySQL'in her sürümünü kaldırmadan önce bunu bulamadım. FML
andrewtweber

2

Sorunun daha önceki bir kurulum olduğu anlaşılıyor /usr/local/var/mysql.

Homebrew ile kaldırma /usr/local/var/mysql, homebrew ile kaldırma , çalıştırma brew doctorve yeniden yükleme işleminden sonra sorun ortadan kalktı.


Çıkarmadan Will /usr/local/var/mysqltüm veritabanı içeriği kaldırmak?
Nicodemuz

@Nicodemuz yup.
nipponese

7
muhtemelen bunu bir uyarı olarak vurgulamalısınız!
Nicodemuz
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.