सवाल `mysql_upgrade` किसी भी वास्तविक कारण के साथ विफल रहा है


मैं MySQL 5.1 से 5.5 तक चल रहा हूं, चल रहा हूं mysql_upgrade और यह आउटपुट प्राप्त करना:

# mysql_upgrade
Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
FATAL ERROR: Upgrade failed

क्या हो रहा है (या नहीं, हो रहा है?) के लिए कहां देखना है, इस पर कोई विचार है कि मैं जो भी गलत हूं और वास्तव में चला सकता हूं उसे ठीक कर सकता हूं mysql_upgrade?

धन्यवाद!

अधिक उत्पादन:

# mysql_upgrade --verbose
Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
FATAL ERROR: Upgrade failed

# mysql_upgrade --debug-check --debug-info
Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
FATAL ERROR: Upgrade failed

# mysql_upgrade --debug-info
Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
FATAL ERROR: Upgrade failed

User time 0.00, System time 0.00
Maximum resident set size 1260, Integral resident set size 0
Non-physical pagefaults 447, Physical pagefaults 0, Swaps 0
Blocks in 0 out 16, Messages in 0 out 0, Signals 0
Voluntary context switches 9, Involuntary context switches 5

# mysql_upgrade --debug-check
Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
FATAL ERROR: Upgrade failed

बंद करने के बाद mysqld --skip-grant-tables के जरिए mysqladmin shutdown और mysql के माध्यम से पुनरारंभ करना service mysql startत्रुटि त्रुटियों के इस सेट के माध्यम से त्रुटि लॉग loops:

130730 21:03:27 [Note] Plugin 'FEDERATED' is disabled.
/usr/sbin/mysqld: Table 'mysql.plugin' doesn't exist
130730 21:03:27 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
130730 21:03:27 InnoDB: The InnoDB memory heap is disabled
130730 21:03:27 InnoDB: Mutexes and rw_locks use GCC atomic builtins
130730 21:03:27 InnoDB: Compressed tables use zlib 1.2.3.4
130730 21:03:27 InnoDB: Initializing buffer pool, size = 20.0G
130730 21:03:29 InnoDB: Completed initialization of buffer pool
130730 21:03:30 InnoDB: highest supported file format is Barracuda.
InnoDB: Log scan progressed past the checkpoint lsn 588190222435
130730 21:03:30  InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...
InnoDB: Doing recovery: scanned up to log sequence number 588192055067
130730 21:03:30  InnoDB: Starting an apply batch of log records to the database...
InnoDB: Progress in percents: 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 
InnoDB: Apply batch completed
InnoDB: Last MySQL binlog file position 0 81298895, file name /var/log/mysql/mysql-bin.006008
130730 21:03:33  InnoDB: Waiting for the background threads to start
130730 21:03:34 InnoDB: 5.5.32 started; log sequence number 588192055067
130730 21:03:34 [Note] Recovering after a crash using /var/log/mysql/mysql-bin
130730 21:03:34 [Note] Starting crash recovery...
130730 21:03:34 [Note] Crash recovery finished.
130730 21:03:34 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
130730 21:03:34 [Note]   - '0.0.0.0' resolves to '0.0.0.0';
130730 21:03:34 [Note] Server socket created on IP: '0.0.0.0'.
130730 21:03:34 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist

के माध्यम से शुरू करने के दौरान MySQL लॉग mysqld_safe --skip-grant-tables

130730 21:19:36 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
130730 21:19:36 [Note] Plugin 'FEDERATED' is disabled.
130730 21:19:36 InnoDB: The InnoDB memory heap is disabled
130730 21:19:36 InnoDB: Mutexes and rw_locks use GCC atomic builtins
130730 21:19:36 InnoDB: Compressed tables use zlib 1.2.3.4
130730 21:19:37 InnoDB: Initializing buffer pool, size = 20.0G
130730 21:19:39 InnoDB: Completed initialization of buffer pool
130730 21:19:39 InnoDB: highest supported file format is Barracuda.
130730 21:19:42  InnoDB: Warning: allocated tablespace 566, old maximum was 0
130730 21:19:42  InnoDB: Waiting for the background threads to start
130730 21:19:43 InnoDB: 5.5.32 started; log sequence number 588192055067
130730 21:19:43 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
130730 21:19:43 [Note]   - '0.0.0.0' resolves to '0.0.0.0';
130730 21:19:43 [Note] Server socket created on IP: '0.0.0.0'.
130730 21:19:43 [Warning] Can't open and lock time zone table: Table 'mysql.time_zone_leap_second' doesn't exist trying to live without them
130730 21:19:43 [ERROR] Can't open and lock privilege tables: Table 'mysql.servers' doesn't exist
130730 21:19:43 [ERROR] Native table 'performance_schema'.'events_waits_current' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'events_waits_history' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'events_waits_history_long' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'setup_consumers' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'setup_instruments' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'setup_timers' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'performance_timers' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'threads' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'events_waits_summary_by_thread_by_event_name' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'events_waits_summary_by_instance' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'events_waits_summary_global_by_event_name' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'file_summary_by_event_name' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'file_summary_by_instance' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'mutex_instances' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'rwlock_instances' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'cond_instances' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'file_instances' has the wrong structure
130730 21:19:43 [Note] /usr/sbin/mysqld: ready for connections.
Version: '5.5.32-0ubuntu0.12.04.1-log'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  (Ubuntu)

जैसा कि मैं इसे समझता हूं, सभी तालिका संरचना / अस्तित्व के मुद्दों (जैसा कि यह mysql सिस्टम तालिकाओं से संबंधित है) को चलकर सही किया जाना चाहिए mysql_upgrade :


68
2017-07-30 20:21


मूल


शायद कुछ भी लायक नहीं है, mysqld साथ चल रहा है --skip-grant-tables विकल्प। मैं के माध्यम से कनेक्ट कर सकते हैं mysql टर्मिनल पर कोई प्रमाण-पत्र नहीं है, और मुझे syslog या कहीं और के माध्यम से कोई त्रुटि नहीं मिलती है, मैं सोच सकता हूं कि मैं कब चलूं mysql_upgrade - Jim Rubenstein
MySQL संदर्भ मैनुअल 5.1 अच्छी तरह से 5.1 से 5.5 तक उन्नयन कवर। यदि आपने यहां सभी निर्देशों का पालन किया है, तो यह उल्लेखनीय होगा। यदि आपके पास नहीं है, तो ... - Aaron Copley
यदि आपके mysql रूट उपयोगकर्ता के पास पासवर्ड नहीं है, तो `mypql_upgrade -u root -p` में '-p` शामिल न करें - Jeferex


जवाब:


मुझे लगता है कि इसे उपयोगकर्ता नाम और पासवर्ड की आवश्यकता है

mysql_upgrade -u root -p

अगर मैं उन्हें पास नहीं करता हूं तो मुझे आपकी त्रुटि मिलती है

संपादित करें: टिप्पणियों के लिए धन्यवाद अब मुझे पता है कि अन्य कारण हैं, शायद कम बार-बार, लेकिन उनके बारे में भी जागरूक होना सबसे अच्छा है

तो आपको वह त्रुटि मिलती है जब

  • आपने उपयोगकर्ता नाम और पासवर्ड पास नहीं किया है
  • आपने अपने प्रमाण पत्र पारित किए, लेकिन वे गलत थे
  • MySQL सर्वर नहीं चल रहा है
  • अनुमतियों की तालिका बर्बाद हो जाती है (फिर आपको MySQL को पुनरारंभ करना होगा mysqld --skip-grant-table)
  • तालिका mysql.plugin गुम है (आप इसके बारे में एक त्रुटि देखेंगे जब MySQL शुरू होता है जो चलाने के लिए सुझाव देता है ... mysql_upgrade, और यह विफल रहता है। आपके पास शायद my.cnf में कुछ अप्रचलित कॉन्फ़िगरेशन है)

93
2017-08-14 10:01



यह वास्तव में मेरी समस्या थी - क्यों न सिर्फ यह कह सकता था कि "प्रमाणित नहीं किया जा सका" या "कनेक्शन त्रुटि" या कुछ? बहुत गुस्सा मै ... - les2
दोस्तों, यदि आपका पासवर्ड भी गलत है तो आपको वही त्रुटि मिलती है। तो सूचित किया जाना चाहिए। - Yoosaf Abdulla
और यदि सर्वर चल रहा है, तो आपको वही त्रुटि मिलती है, भले ही यह पासवर्ड स्वीकार करे। - Raman
बस जब डेटाबेस तालिका या डेटाबेस प्रारूप भी टूटा हुआ है, तो यह काम नहीं करता है, तो आपको "mysqld --skip-grant-table" के साथ डिमन शुरू करने की आवश्यकता है और mysql_upgrade को किसी अन्य टर्मिनल में चलाएं! - Henning
इसके लिए +1। फिर भी एक और कारण है कि मैं MySQL से नफरत करता हूं - Excalibur


5.5 से 5.6 तक अपग्रेड करते समय मुझे इन सटीक लक्षणों का सामना करना पड़ा, और यह एक सेवा पहुंच योग्यता मुद्दा बन गया।

भले ही क्ली MySQL क्लाइंट मेरे स्थानीय डीबी इंस्टेंस से केवल एक -u और -p प्रदान कर सकता है, मुझे भी mysql_upgrade के लिए 127.0.0.1 निर्दिष्ट करने की आवश्यकता है क्योंकि यह सॉकेट फ़ाइल कनेक्शन का प्रयास कर रहा था और प्रयास में बुरी तरह विफल रहा था।


9
2017-08-19 19:33



यह वास्तव में मेरी समस्या थी क्योंकि मैं इस तरह mysqd चलाता हूं: mysqld --skip-grant-table --user = mysql - Rodo


ऐसा लगता है कि Plesk सर्वर का उपयोग करते समय, Plesk का उपयोग करते समय MySQL के लिए कोई रूट नहीं है, लेकिन MySQL के व्यवस्थापक को व्यवस्थापक कहा जाता है, इसलिए यह आदेश Plesk पर काम करना चाहिए क्योंकि मैंने पहले इसे आजमाया था:

mysql_upgrade -uadmin -p`cat /etc/psa/.psa.shadow`

9
2017-10-09 08:56



यह मेरे लिए पूरी तरह से काम किया - Carlos Alberto Martínez Gadea


वही मुद्दा! मेरे लिए समाधान आया था http://www.freebsd.org/cgi/query-pr.cgi?pr=180624

संक्षेप में: त्रुटि भ्रामक है! रन mysql_upgrade -u root -p डीबी ऑनलाइन के साथ और रूट पासवर्ड प्रदान करते हैं।


5
2017-11-30 10:23





आप यह देखने के लिए इन्हें एक-एक करके चलाने का प्रयास कर सकते हैं कि यह कहां विफल रहता है:

mysql_upgrade तालिकाओं की जांच और मरम्मत और सिस्टम तालिकाओं को अपग्रेड करने के लिए निम्न आदेश निष्पादित करता है:

mysqlcheck --all-databases --check-upgrade --auto-repair  
mysql < fix_priv_tables  
mysqlcheck --all-databases --check-upgrade --fix-db-names --fix-table-names

से http://dev.mysql.com/doc/refman/5.5/en/mysql-upgrade.html


4
2017-07-30 21:10



इसके बारे में सोचा, लेकिन fix_priv_tables एक स्क्रिप्ट है जो उत्पन्न होती है mysql_upgrade privelege टेबल फिक्सअप करने के लिए - Jim Rubenstein
अच्छा बिंदु, शायद पहले mysqlcheck लाइन का प्रयास करें? और सीधे बिन फ़ोल्डर से चलने का प्रयास करें, fwiw, /usr/bin/mysql_upgrade - user16081-JoeT


यह सवाल अविश्वसनीय रूप से सामान्य है, और इसके लिए मैं क्षमा चाहता हूं।

मुझे जिस समस्या का सामना करना पड़ रहा था, उसके लिए मुझे कोई सीधा कारण और समाधान नहीं मिला, इसलिए मैंने यह देखने के लिए MySQL को दोबारा स्थापित करने का सहारा लिया कि यह काम करेगा या नहीं। बाहर निकलता है, चाल फिर से स्थापित किया। यह ठीक करने का एक लंगड़ा तरीका था, लेकिन यह एकमात्र विकल्प था जिसे मैंने छोड़ा था।

इस प्रश्न पर कई अन्य उत्तर समस्याएं हैं जिन्हें मुझे शुरुआत में चलाने के लिए mysql_upgrade प्राप्त करने के लिए काम करना पड़ा था, लेकिन किसी भी कारण से - यह कुछ स्वचालित प्रश्नों को चलाने की कोशिश कर रहा था, क्योंकि यह दस्तावेज नहीं मिला पूछताछ यह चल रहा था इसलिए मैं उन्हें ठीक कर सकता था।


3
2017-11-30 14:00



हाँ एक बार जब MySQL का डेटा डीआईआर दूषित हो गया है तो आप ऐसा कुछ भी नहीं कर सकते हैं जो आप कर सकते हैं - Krauser


आपको mysql डेटा के तहत सभी फ़ाइलों को अनुमति की जांच करनी होगी। यह mysql पीआईडी ​​(mysql या _mysql) का एक ही मालिक होना चाहिए। यह कभी होता है क्योंकि उचित अनुमति के बिना फ़ाइल से डेटा बहाल करें। उदाहरण के लिए यदि आपका mysql डेटा / var / lib / mysql के अंतर्गत है

chown -R mysql /var/lib/mysql

2
2017-11-07 00:12