Không thể khởi động mysql: InnoDB: Nâng cấp sau khi sự cố không được hỗ trợ


16

Tôi đang cố gắng chạy MySQL từ bản cài đặt Homebrew, nhưng nó vẫn bị lỗi khi thử mysql.server start.

My /usr/local/var/mysql/<name>.local.errđọc như vậy, và cứ gửi tin nhắn lỗi này cứ sau vài giây.

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

Câu trả lời:


17

Tôi đã có cùng một lỗi chính xác trong nhật ký của tôi. Chỉ để xây dựng câu trả lời của Nipponese.

Xóa tất cả các phiên bản của MySQL (Tôi đã có 5.7.21, 5.7.22 và 8.0.11):

brew uninstall --force mysql

Xác nhận xóa và sửa chữa :

brew services list và sau đó brew doctor

Đổi tên MySQL gốc :

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

Cài đặt MySQL mới nhất (hiện tại 8.0.11):

brew install mysql

Cài đặt bảo mật MySQL :

/usr/local/bin/mysql_secure_installation

Tôi ban đầu nhận được lỗi này: Error: Access denied for user 'dbadmin'@'localhost' (using password: YES)

Tôi đang sử dụng một cấu hình cấp độ người dùng. Vì vậy, tôi đã đổi tên .my.cnf và chạy lại cài đặt an toàn.

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

Trên lời nhắc cài đặt, tôi nhập các tùy chọn sau Y, 0, Y, N, N, Y, Y.

Nâng cấp MySQL Workbench Sau đó tôi vẫn không thể kết nối với MySQL Workbench (GA 6.3.10) mặc dù cuối cùng có vẻ như nó đã bắt đầu MySQL. Tôi đã nhận được thông báo lỗi sau.

"Không thể tải plugin xác thực 'cacheing_sha2_password': dlopen (/usr/local/mysql/lib/plugin/caching_sha2_password.so, 2): không tìm thấy hình ảnh"

Để giải quyết vấn đề này, tôi đã tải xuống MySQL Workbench 8.0.11 rc (phiên bản Phát hành Phát triển). Tôi đã sử dụng GUI để thêm người dùng mà tôi có trước khi tuân thủ các quy tắc mật khẩu mới. Tôi đã cập nhật và đổi tên ~ / .my.cnf với mật khẩu an toàn hơn. Sau đó khôi phục DB của tôi.

Tại thời điểm này tôi đã có thể kết nối với bàn làm việc bằng cách sử dụng root và mật khẩu mới tôi thiết lập trong quá trình cài đặt an toàn.

Dọn dẹp (xóa thư mục đã đổi tên và nội dung của nó):

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


1
Điều này rõ ràng đã tự trả lời bởi các poster ban đầu ngày hôm qua.
JakeGould

4
Có lẽ nó đã tự trả lời, nhưng không phải với chi tiết cần thiết như vậy cho những người trong chúng ta đang tìm kiếm các bước chính xác cần thiết.
Sturm

Mục đích của việc đổi tên /usr/local/var/mysqlthay vì chỉ đơn giản là loại bỏ nó ngay từ đầu? old.mysqlkhông được sử dụng ở bất cứ đâu ngoại trừ trong bước làm sạch. Tôi yêu cầu bởi vì nó sẽ hữu ích để cài đặt lại MySQL trong khi bảo quản cơ sở dữ liệu.
dùng2763030

Lý do tôi làm điều đó chỉ là trong trường hợp tôi muốn bất kỳ dữ liệu nào sau đó. Tất cả các cơ sở dữ liệu địa phương của tôi là / là bản sao của môi trường sản xuất của chúng tôi vì vậy tôi đã không sao lưu mọi thứ và chỉ đồng bộ hóa tất cả sau quá trình nâng cấp. Tôi tin rằng bạn có thể sử dụng cơ sở dữ liệu từ các phiên bản trước mặc dù mysql 8 đã cập nhật các quy tắc mã hóa cho mật khẩu. Tôi biết bạn có thể thêm một dòng vào .my.cnf của mình để sử dụng phương thức xác thực cũ hơn thay vì sha2. Xin lỗi tôi không siêu hiểu biết về phần đó. Tôi hi vọng cái này giúp được.
Thợ săn

Nếu bạn nhận được Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)trong khi chạy /usr/local/bin/mysql_secure_installation, bạn có thể chỉ cần khởi động máy chủ MySql như tôi đã làm. Bạn có thể làm điều này bằng cách chạy "mysql.server start".
Richie Thomas

12

tldr; Một phiên bản mới của mysql đã được cài đặt thông qua Homebrew. Hoàn nguyên về phiên bản đã cài đặt trước đó.

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

Câu chuyện đầy đủ là bạn có thể đã cài đặt một phiên bản mới hơn của mysql brew upgrade. Xem lại đầu ra của brew info mysql. Bạn có thể thấy nhiều hơn một phiên bản.

Trong trường hợp của tôi, tôi đã thấy cả hai điều sau đây:

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

Tôi đã kiểm tra mysql --versionvà 8.0.11 mới hơn đang chạy.

Homebrew bao gồm switchlệnh cho phép bạn thực hiện điều đó giữa các dịch vụ.

Thực hiện điều này thay thế phiên bản bằng của riêng bạn:

brew switch mysql 5.7.17

Khởi động lại mysql:

brew services restart mysql

Tất cả nên trở lại trong trật tự làm việc.


1
Làm thế nào điều này khác nhau về mục đích cuối cùng với câu trả lời đã tự trả lời và được chấp nhận ?
JakeGould

4
@JakeGould Trả lời 167207 đề nghị bạn xóa tất cả nội dung cơ sở dữ liệu của mình. Câu trả lời của tôi cho thấy sử dụng brew switchmà không.
johnsampson

Đủ công bằng. Lời khuyên tốt. +1
JakeGould 30/07/18

1
Câu trả lời tốt. Làm việc cho tôi
Kuppuraj

1
Quá tệ, tôi đã không tìm thấy điều này trước khi gỡ cài đặt mọi phiên bản của mysql. FML
andrewtweber

3

Tôi có vẻ như vấn đề là một cài đặt trước đó /usr/local/var/mysql.

Sau khi gỡ cài đặt qua homebrew, gỡ bỏ /usr/local/var/mysql, chạy brew doctorvà cài đặt lại qua homebrew, vấn đề đã biến mất.


Sẽ loại bỏ /usr/local/var/mysqlloại bỏ tất cả nội dung cơ sở dữ liệu của bạn?
Nicodemuz

@Nicodemuz yup.
nipponese

6
bạn có lẽ nên nhấn mạnh rằng như một cảnh báo!
Nicodemuz
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.