`mysql_upgrad` कोई वास्तविक कारण दिए जाने के साथ विफल हो रहा है


70

मैं 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, त्रुटि लॉग इस त्रुटि के सेट के माध्यम से बार-बार समाप्त हो जाती है:

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:


इसके अलावा शायद कुछ भी नहीं, विकल्प के mysqldसाथ चल रहा है --skip-grant-tables। मैं mysqlबिना किसी क्रेडेंशियल के टर्मिनल पर कनेक्ट हो सकता हूं , और मुझे सिस्लॉग के माध्यम से कोई त्रुटि नहीं मिलती है या कहीं और जब मैं दौड़ता हूं तो मैं सोच सकता हूंmysql_upgrade
जिम रुबेंस्टीन

MySQL संदर्भ मैनुअल बहुत अच्छी तरह से 5.1 से 5.5 के उन्नयन के कवर। यदि आपने यहां सभी निर्देशों का पालन किया है, तो यह ध्यान देने योग्य होगा। यदि आपने अच्छी तरह से नहीं किया है ...
हारून कोपले

यदि आपके mysql रूट उपयोगकर्ता के पास पासवर्ड नहीं है, तो `mysql_upgrad -u root -p` में` -p` शामिल न करें
Jeferex

जवाबों:


95

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

mysql_upgrade -u root -p

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

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

तो आप उस त्रुटि को प्राप्त करते हैं

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

23
यह ठीक वैसी ही समस्या थी जैसी मेरे पास थी - नर्क यह क्यों नहीं कह सकता था "प्रमाणित नहीं कर सका" या "कनेक्शन त्रुटि" या कुछ और? इतना गुस्सा ...
les2

3
दोस्तों, अगर आपका पासवर्ड भी गलत है, तो आपको वही त्रुटि मिलती है। इसलिए सूचित किया जाए।
योसफ अब्दुल्ला

3
और आपको एक ही त्रुटि मिलती है अगर सर्वर नहीं चल रहा है, भले ही यह पासवर्ड स्वीकार करने के लिए प्रकट हो।
रमन

1
बस जब डेटाबेस तालिका या डेटाबेस प्रारूप भी टूट जाता है, तो यह या तो काम नहीं करता है, तो आपको "mysqld --skip- अनुदान-टेबल" के साथ डेमॉन शुरू करने और दूसरे टर्मिनल में mysql_upgrad को चलाने की आवश्यकता है!
हेनिंग

इसके लिए +1। फिर भी एक और कारण मुझे MySQL से नफरत है
Excalibur

9

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

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


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

9

ऐसा लगता है कि एक Plesk सर्वर, जब Plesk का उपयोग कर रहा है, तो इसके लिए कोई रूट नहीं है।

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

यह मेरे लिए पूरी तरह से काम करता है
xarlymg89

5

आप इनको एक-एक करके चलाने की कोशिश कर सकते हैं, जहां यह विफल होता है:

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

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


1
उस के बारे में सोचा, लेकिन fix_priv_tablesएक स्क्रिप्ट है जो mysql_upgradeप्रिविलेज टेबल को ठीक करने के लिए बनाई गई है
जिम रुबेंस्टीन

अच्छी बात है, शायद पहले mysqlcheck लाइन का प्रयास करें? और बिन फोल्डर से सीधे चलने की कोशिश करें, fwiw,/usr/bin/mysql_upgrade
user16081-JoeT


3

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

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

इस प्रश्न पर बहुत से अन्य उत्तर हैं समस्याएँ जो मुझे शुरू में चलाने के लिए mysql_upgrad को प्राप्त करने के लिए काम करना था, लेकिन जो भी कारण से - यह विफल हो गया क्योंकि यह कुछ स्वचालित प्रश्नों को चलाने की कोशिश कर रहा था, और मुझे वह दस्तावेज नहीं मिला जिस पर प्रश्न यह चल रहे थे ताकि मैं उन्हें ठीक कर सकूं।


हाँ, एक बार जब mysql का डेटा डायर भ्रष्ट हो गया है तो आपके पास बहुत कुछ नहीं है
Krauser

2

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

chown -R mysql /var/lib/mysql

2

हमारे DBA ने केवल 5.5.39 में अपग्रेड करने के बजाय mysql संस्करण 5.0.95 की स्थापना रद्द कर दी। स्थापना रद्द करें ऊपर का समर्थन /etc/my.cnfकरने के लिए /etc/my.cnf.rpmsaveतो इसे हटा दिया है, और इस को ठीक से प्रारंभ होने से MySQL रोक दिया गया:

140902 15:00:57 [ERROR] Plugin 'InnoDB' init function returned error.
140902 15:00:57 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
140902 15:00:57 [ERROR] Unknown/unsupported storage engine: InnoDB
140902 15:00:57 [ERROR] Aborting

आप निम्न में से कोई भी कर सकते हैं:

  • मैन्युअल रूप से my.cnf फ़ाइलों की तुलना करें और InnoDB के लिए उपयुक्त कॉन्फिगरेशन सेटिंग्स लाएं

  • my.cnf.rpmsaveमूल पर वापस पुनर्स्थापित करें (किसी भी नई डिफ़ॉल्ट सेटिंग के लिए पहले जांचें जो आपको जोड़ना चाहिए!)

  • नए की vimdiffतुलना करने के my.cnf.rpmsaveलिए एक अलग उपकरण का उपयोग करें my.cnfऔर इनक्यूबीडी सेटिंग्स सहित MySQL कॉन्फिगरेशन में किए गए ट्वीक पर वापस लाए।

    [root]# vimdiff /etc/my.cnf /etc/my.cnf.rpmsave

मैंने अंतिम विकल्प किया, फिर MySQL शुरू करने में सक्षम था:

root]# service mysqld start
Starting mysqld:                                           [  OK  ]

और अब mysql_upgradeठीक काम करता है, mysql_upgrade -uroot -pतो यह मुझे रूट पासवर्ड के लिए प्रेरित किया।

[root]# mysql_upgrade -uroot -p
Enter password:
Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
Running 'mysqlcheck with default connection arguments
....

उम्मीद है की यह मदद करेगा!

और mysql_upgrade -uroot -pफेल होने का भी उपयोग कर रहा है क्योंकि इसे चलने के लिए MySQL की आवश्यकता है!

सीख सीखी:

  • बैकअप my.cnf को अपग्रेड करने से पहले ... और वास्तव में अनइंस्टॉल करने के बजाय इन-प्लेस अपग्रेड करें फिर नए संस्करण की स्थापना करें।
  • MySQL चलाएं ताकि आप mysql_upgrad का उपयोग कर सकें।
  • फायदा।

1

मेरे लिए एक ही समस्या है, लेकिन मेरी समस्याओं का स्रोत पुराना पासवर्ड प्रारूप था। जबकि mysql को "स्किप-सिक्योर-सेक्यूरिटी" के साथ पुराने प्रारूप का उपयोग करके कनेक्ट करने के लिए मजबूर किया जा सकता है, mysql_upgrad में यह विकल्प नहीं है। आपको नए प्रारूप के साथ रूट पासवर्ड को अपडेट करने की आवश्यकता है और फिर आप अपने mysql को अपग्रेड कर सकते हैं।


1

5.1 से 5.5 तक अपग्रेड करने में यही समस्या थी।

यह मेरे लिए काम किया: sudo mysql_upgrade -S <path-to-socket> -u <myuser> -p<mypass>

मेरी त्रुटि संभवतः सॉकेट पथ की अनुमतियों के कारण थी, लेकिन यह सत्यापित करने का समय नहीं था कि यह कारण था।


मैं किसी समय अपना डेटाडायर ले आया था, मुझे लगता है कि इसीलिए मुझे सॉकेट के लिए रास्ता चाहिए था
zzapper 15

0

मैं मिंट 12 से मिंट 15 तक अपने सिस्टम को अपग्रेड करने के बाद बस इसमें भाग गया। मैंने संग्रहीत / var / lib / mysql को संग्रहीत किया था और इसे अपग्रेड के बाद वापस रखा। मैंने mysqlcheckuser16081 की टिप्पणी से पहला भाग लिया , और इसने mysql.sock के बारे में शिकायत की।

मैंने mysqld का उपयोग शुरू किया /usr/sbin/mysqld &और mysql_upgradeठीक चला।


यह MySQL के उन्नयन के लिए एक बहुत ही डरावना तरीका है, लेकिन मुझे खुशी है कि इसने आपके लिए काम किया।
हारून कोपले

@ aaron-copley: वास्तव में यह पूरी तरह से काम नहीं किया। MySQL 5.5.32 आंशिक रूप से मेरे कई InnoDB तालिकाओं की अनदेखी कर रहा है; वे दिखाई देते हैं SHOW TABLES, लेकिन अन्यथा मौजूद नहीं हैं। मैं वर्तमान में काम करने के लिए mysql- उपयोगिताओं को प्राप्त करने की कोशिश कर रहा हूं, लेकिन वह लापता अजगर मॉड्यूल के बारे में शिकायत कर रहा है।
मार्टी वन्स

0

मैं उसी समस्या को लेकर भागा।
मैंने इसे -S /path/to/mysql.sock को शामिल करके हल किया

मेरे विशेष मामले में mysql_upgrad का आउटपुट था:
'mysql' की
तलाश : mysql 'mysqlcheck' की तलाश: mysqlcheck
FATAL ERROR: Ups विफल

यह बहुत बेकार है। - कहावत से कोई फर्क नहीं पड़ता।

मेरे आसपास घूमना मैं निम्नलिखित कमांड पर बस गया और इसने एक आकर्षण की तरह काम किया:
mysql_upgrad -S /var/lib/mysql/mysql.sock -uUSERNAME -p

आशा है ये मदद करेगा।


0

मैंने इस समस्या का सामना किया, और मुझे पता चला कि,

  1. इसके लिए MySQL Service का होना आवश्यक है

  2. यह उपयोगकर्ता नाम और पासवर्ड की आवश्यकता है


0

मैंने उसी मुद्दे का सामना किया।

मैंने mysql_install_db --user=mysqlअपनी rc.mysqlफ़ाइल की टिप्पणियों में वर्णित नए डेटाबेस को स्थापित करके इसे हल किया / आदि।

तब मैं mysql डेमॉन को शुरू करने और 'mysql' या जो कुछ भी आप mysql पैकेज से कनेक्ट करना चाहते थे उसका उपयोग करने में सक्षम था।

मुझे स्लैकवेयर आर्म पर यह समस्या थी, लेकिन मान लीजिए कि इस मामले में कोई फर्क नहीं पड़ता।


0

मेरे मामले में मेरे पास स्थानीय रूप से चलने वाले mysqld के कुछ संस्करण थे जिन्होंने mysql_upgrad को त्रुटि के साथ विफल कर दिया : सर्वर संस्करण लाते समय विफल रहा! अनधिकृत पहुंच के कारण हो सकता है। ps aux | grep mysqlऔर सुनिश्चित करें कि mysqld सभी बंद है। फिर सभी संस्करण की स्थापना रद्द करें, सही संस्करण को पुनर्स्थापित करें। और उसके बाद mysql_upgrade ने काम करना शुरू कर दिया।


-1

प्रयत्न, कोशिश

mysql_upgrade --verbose 

या शायद (या दोनों)

--debug-check --debug-info

उन लोगों की कोशिश की, कोई वास्तविक उपयोगी जानकारी, मुझे नहीं लगता;
जिम रुबेंस्टीन

कुछ त्रुटि लॉग जानकारी को पुनः आरंभ और चिपकाया गया; यह निश्चित नहीं है कि यह बार-बार उन्हीं त्रुटियों से क्यों जूझता रहेगा।
जिम रुबेंस्टीन

ऐसा लगता है कि आपके पास कोई त्रुटि है - 130730 21:03:34 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't existमुझे लगता है कि पूरी बात विफल हो गई है।
एलेक्सिस

लेकिन इससे पहले, mysql_upgrad --version को आज़माएँ और उसके लिए आउटपुट प्रदान करें।
एलेक्सस

mysql_upgrade --versionकोई संस्करण उत्पादन नहीं करता है (सिर्फ वास्तविक त्रुटि)। mysql --versionmysql Ver 14.14 डिस्ट्रीब्यूट 5.5.32, डेबियन-लिनुक्स-गन्नू (x86_64) के लिए रीडलाइन 6.2 का उपयोग कर रहा है, और mysqld संस्करण 5.5 है
जिम रुबस्टीन

-3

MySQL के रूट यूजर को "एडमिन" नाम दिया गया है, रूट नहीं। सही आज्ञा है

mysql_upgrade -uadmin -p

यह बिलकुल गलत है। MySQL में रूट यूजर है root
dr01
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.