ไม่สามารถเริ่ม 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 ด้วยรหัสผ่านที่ปลอดภัยยิ่งขึ้น จากนั้นคืนค่าฐานข้อมูลของฉัน

ณ จุดนี้ฉันสามารถเชื่อมต่อกับ workbench โดยใช้ root และรหัสผ่านใหม่ที่ฉันติดตั้งระหว่างการติดตั้งที่ปลอดภัย

ล้างข้อมูล (ลบไดเรกทอรีที่ถูกเปลี่ยนชื่อและเนื้อหา):

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


1
นี่เป็นคำตอบที่ชัดเจนจากผู้โพสต์ดั้งเดิมเมื่อวานนี้
JakeGould

4
บางทีมันอาจจะตอบแล้ว แต่ไม่ได้มีรายละเอียดที่จำเป็นสำหรับพวกเราที่กำลังมองหาขั้นตอนที่แน่นอนที่จำเป็น
พายุ

อะไรคือจุดประสงค์ในการเปลี่ยนชื่อ/usr/local/var/mysqlแทนที่จะลบออกเมื่อเริ่มต้น? old.mysqlไม่ได้ใช้งานทุกที่ยกเว้นในระหว่างขั้นตอนการทำความสะอาด ฉันถามเพราะมันจะมีประโยชน์ในการติดตั้ง MySQL ในขณะที่รักษาฐานข้อมูล
user2763030

เหตุผลที่ฉันทำมันก็แค่ในกรณีที่ฉันต้องการข้อมูลใด ๆ ในภายหลัง ฐานข้อมูลท้องถิ่นทั้งหมดของฉันคือ / เป็นโคลนของสภาพแวดล้อมการผลิตของเราดังนั้นฉันจึงไม่ได้สำรองข้อมูลใด ๆ และเพิ่งซิงค์ทั้งหมดหลังจากกระบวนการอัปเกรด ฉันเชื่อว่าคุณสามารถใช้ฐานข้อมูลจากเวอร์ชันก่อนหน้านี้แม้ว่า mysql 8 ได้อัปเดตกฎการเข้ารหัสสำหรับรหัสผ่านแล้ว ฉันรู้ว่าคุณสามารถเพิ่มบรรทัดใน. my.cnf ของคุณเพื่อใช้วิธีการรับรองความถูกต้องแบบเก่าแทน 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"
Richie Thomas

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
คำตอบที่ดี. ทำงานให้ฉัน
Kuppuraj

1
น่าเสียดายที่ฉันไม่พบสิ่งนี้ก่อนที่จะถอนการติดตั้ง mysql ทุกรุ่น FML
andrewtweber

2

/usr/local/var/mysqlฉันดูเหมือนว่าประเด็นสำคัญคือการติดตั้งก่อนหน้านี้ใน

หลังจากถอนการติดตั้งผ่าน homebrew การลบการ/usr/local/var/mysqlเรียกใช้brew doctorและการติดตั้งใหม่ผ่าน homebrew ปัญหาจะหายไป


จะ/usr/local/var/mysqlลบเนื้อหาฐานข้อมูลทั้งหมดของคุณหรือไม่
Nicodemuz


7
คุณควรเน้นว่าเป็นการเตือน!
Nicodemuz
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.