प्रारंभ नहीं कर सकता mysql: InnoDB: किसी क्रैश के बाद अपग्रेड नहीं किया गया है


16

मैं एक Homebrew स्थापना से MySQL चलाने की कोशिश कर रहा हूं, लेकिन यह कोशिश करते समय विफल रहता है 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 का नाम बदला। फिर मेरे डीबी को बहाल किया।

इस बिंदु पर मैं रूट का उपयोग करके कार्यक्षेत्र से जुड़ने में सक्षम था और सुरक्षित इंस्टॉल के दौरान नया पासवर्ड I सेटअप।

क्लीन अप (हटाए गए निर्देशिका को हटा दें और यह सामग्री है):

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


1
यह मूल पोस्टर द्वारा कल पहले से ही स्पष्ट रूप से स्व-उत्तर दिया गया था।
जेकलॉन्ड

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" चलाकर ऐसा कर सकते हैं।
रिची थॉमस

12

tldr; Homebrew के माध्यम से mysql का एक नया संस्करण स्थापित किया गया था। पहले से स्थापित संस्करण पर वापस लौटें।

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
यह पहले से ही स्व-उत्तर और स्वीकृत उत्तर से अंतिम-उद्देश्य में कैसे भिन्न है ?
जेकलॉल्ड

4
@JakeGould उत्तर 167207 आपको अपने सभी डेटाबेस सामग्री को हटाने का सुझाव देता है। मेरे उत्तर का उपयोग करने का सुझाव है brew switchजो नहीं करता है।
जॉन्सैम्पसन

काफी उचित। अच्छी सलाह। +1
जेकल्ड

1
अच्छा उत्तर। मेरे लिए काम किया
कुप्पुराज

1
इससे पहले कि मैं mysql के हर संस्करण को अनइंस्टॉल करूं, बहुत बुरा मुझे यह नहीं मिला। FML
andrewtweber

2

मुझे लगता है कि समस्या पिछले स्थापना में थी /usr/local/var/mysql

Homebrew के माध्यम से अनइंस्टॉल करने के बाद, homebrew के माध्यम से हटाने /usr/local/var/mysql, चलाने brew doctor, और फिर से स्थापित करने से समस्या दूर हो गई।


क्या /usr/local/var/mysqlआपके सभी डेटाबेस की सामग्री को हटा देगा ?
Nicodemuz

@ निकोडेमुज़ युप।
निपोनसी

7
आपको शायद एक चेतावनी के रूप में उजागर करना चाहिए!
निकोडेमुज
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.