Tidak dapat memulai mysql: InnoDB: Memutakhirkan setelah kerusakan tidak didukung

16

Saya mencoba menjalankan MySQL dari instalasi Homebrew, tetapi tetap gagal ketika mencoba mysql.server start.

Saya /usr/local/var/mysql/<name>.local.errmembaca seperti itu, dan terus mengirim pesan kesalahan ini setiap beberapa detik.

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
Jepang
sumber

Jawaban:

17

Saya memiliki kesalahan yang sama persis di log saya. Hanya untuk membangun dari jawaban orang Nippon.

Hapus semua versi MySQL (Saya punya 5.7.21, 5.7.22, dan 8.0.11):

brew uninstall --force mysql

Konfirmasikan Penghapusan dan Perbaikan :

brew services list lalu brew doctor

Ganti nama MySQL asli :

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

Instal MySQL terbaru (saat ini 8.0.11):

brew install mysql

Instal MySQL Secure :

/usr/local/bin/mysql_secure_installation

Saya awalnya menerima kesalahan ini: Error: Access denied for user 'dbadmin'@'localhost' (using password: YES)

Saya menggunakan konfigurasi tingkat pengguna. Jadi saya mengganti nama .my.cnf dan menjalankan instalasi aman lagi.

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

Pada petunjuk instalasi saya memasukkan opsi berikut Y, 0, Y, N, N, Y, Y.

Upgrade MySQL Workbench Setelah itu saya masih tidak bisa terhubung dengan MySQL Workbench (GA 6.3.10) meskipun tampaknya mulai memulai MySQL akhirnya. Saya mendapatkan prompt kesalahan berikut.

"Plugin otentikasi 'caching_sha2_password' tidak dapat dimuat: dlopen (/usr/local/mysql/lib/plugin/caching_sha2_password.so, 2): gambar tidak ditemukan"

Untuk mengatasi ini, saya mengunduh MySQL Workbench 8.0.11 rc (versi Development Release). Saya menggunakan GUI untuk menambahkan pengguna yang saya miliki sebelum mematuhi aturan kata sandi baru. Saya memperbarui dan mengganti nama ~ / .my.cnf dengan kata sandi yang lebih aman. Kemudian mengembalikan DB saya.

Pada titik ini saya dapat terhubung dengan meja kerja menggunakan root dan kata sandi baru yang saya setup selama instalasi aman.

Bersihkan (hapus direktori yang diubah namanya dan isinya):

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

Pemburu
sumber
1
Ini jelas sudah dijawab sendiri oleh poster aslinya kemarin.
JakeGould
4
Mungkin itu sudah dijawab sendiri, tetapi tidak dengan detail penting seperti itu bagi kita yang mencari langkah-langkah tepat yang diperlukan.
Sturm
Apa tujuan dari penggantian nama /usr/local/var/mysqlbukan hanya menghapusnya sejak awal? old.mysqltidak digunakan di mana pun kecuali selama langkah pembersihan. Saya bertanya karena akan sangat membantu untuk menginstal ulang MySQL sambil menjaga database.
user2763030
Alasan saya melakukannya adalah untuk berjaga-jaga jika saya menginginkan salah satu data nanti. Semua basis data lokal saya adalah klon dari lingkungan produksi kami, jadi saya tidak mencadangkan apa pun dan hanya menyinkronkan semuanya setelah proses peningkatan. Saya percaya Anda bisa menggunakan database dari versi sebelumnya meskipun mysql 8 telah memperbarui aturan enkripsi untuk kata sandi. Saya tahu Anda dapat menambahkan baris ke .my.cnf Anda untuk menggunakan metode auth yang lebih lama daripada sha2. Maaf, saya tidak tahu banyak tentang hal itu. Saya harap ini membantu.
Hunter
Jika Anda Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)berjalan sambil berlari /usr/local/bin/mysql_secure_installation, Anda mungkin perlu memulai server MySql seperti yang saya lakukan. Anda dapat melakukan ini dengan menjalankan "mysql.server start".
Richie Thomas
12

tldr; Versi baru mysql dipasang melalui Homebrew. Kembalikan ke versi yang diinstal sebelumnya.

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

Kisah lengkapnya adalah Anda kemungkinan menginstal versi mysql yang lebih baru brew upgrade. Tinjau output dari brew info mysql. Anda dapat melihat lebih dari satu versi.

Dalam kasus saya, saya melihat kedua hal berikut:

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

Saya memeriksa mysql --versiondan 8.0.11 yang baru berjalan.

Homebrew menyertakan switchperintah yang memungkinkan Anda melakukan hal itu di antara layanan.

Jalankan ini mengganti versi dengan versi Anda sendiri:

brew switch mysql 5.7.17

Mulai ulang mysql:

brew services restart mysql

Semua harus kembali berfungsi.

johnsampson
sumber
1
Bagaimana hal ini berbeda dalam tujuan akhir dari jawaban yang sudah dijawab sendiri dan diterima ?
JakeGould
4
@JakeGould Jawab 167207 menyarankan Anda menghapus semua konten database Anda. Jawaban saya menyarankan menggunakan brew switchyang tidak.
johnsampson
Cukup adil. Saran yang bagus. +1
JakeGould
1
Jawaban yang bagus. Bekerja untuk saya
Kuppuraj
1
Sayang sekali saya tidak menemukan ini sebelum saya menghapus semua versi mysql. FML
andrewtweber
3

Saya sepertinya masalah adalah instalasi sebelumnya di /usr/local/var/mysql.

Setelah menghapus instalan melalui homebrew, menghapus /usr/local/var/mysql, menjalankan brew doctor, dan menginstal ulang melalui homebrew, masalah itu hilang.

Jepang
sumber
Akankah menghapus /usr/local/var/mysqlmenghapus semua konten basis data Anda?
Nicodemuz
@Nicodemuz ya
nipponese
6
Anda mungkin harus menyoroti itu sebagai peringatan!
Nicodemuz