16.04 अपग्रेड ने mysql-server को तोड़ दिया


127

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

यह वह त्रुटि है जिसे मैं इसे स्थापित / पुनः स्थापित करने का प्रयास करते समय देखता हूं:

Setting up mysql-server-5.7 (5.7.11-0ubuntu6) ...
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
invoke-rc.d: initscript mysql, action "start" failed.
dpkg: error processing package mysql-server-5.7 (--configure):
 subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of mysql-server:
 mysql-server depends on mysql-server-5.7; however:
  Package mysql-server-5.7 is not configured yet.

dpkg: error processing package mysql-server (--configure):
 dependency problems - leaving unconfigured
No apport report written because the error message indicates its a followup error from a previous failure.
                   Processing triggers for systemd (229-4ubuntu4) ...
Processing triggers for ureadahead (0.100.0-19) ...
Errors were encountered while processing:
 mysql-server-5.7
 mysql-server
E: Sub-process /usr/bin/dpkg returned an error code (1)

मैंने पूरी तरह से इसे हटाने की कोशिश की है, हालांकि निर्भरता (?) के कारण मारबीडीबी को स्थापित करने का इतना प्रयास किया गया है। इसे ठीक करने के लिए मैं क्या कर सकता हूं, इस पर कोई सुझाव।

संपादित करें: ऐसा लगता है कि मैं अकेला नहीं हूं: https://bugs.launchpad.net/ubuntu/+source/mysql-5.7//bug/1573279


मुझे यहाँ भी यही समस्या है
कर्नेलपनिक

1
Phpmyadmin को अनइंस्टॉल करना पड़ा, जो किसी तरह निर्भरता की समस्या पैदा कर रहा था। पुनः स्थापित करने के बाद, सब कुछ फिर से ठीक काम कर रहा है।
हेनरिच

1
उबंटू 14 से 16 तक अपग्रेड-अपग्रेड MySQL 5.5 से 5.7 तक एक असमर्थित अपग्रेड करता है, इसलिए यह उम्मीद है कि MySQL के बाद टूट गया है, जैसा कि यहां बताया गया है: Bugs.launchpad.net/ubuntu/+source/ubuntu-release-upgrader/ + बग /…
मार्को मार्सला

1
@MarcoMarsala मुझे नहीं पता कि हम कह सकते हैं कि यह Ubuntu 14 से 16 अपग्रेड के बाद MySQL के टूटने की उम्मीद है , हालांकि मुझे लगता है कि यह आपके नजरिए पर निर्भर करता है। औसत उपयोगकर्ता के लिए, निश्चित रूप से यह एलटीएस अपग्रेड ब्रेक माईएसक्यूएल की तरह होने की उम्मीद नहीं है। यह आश्चर्यजनक है कि परीक्षण के दौरान पकड़ा नहीं गया था, हालांकि।
TheGremlyn

उपयुक्त स्थापित phpmyadmin --reinstall mysql को छूने के लिए कोई ज़रूरत नहीं के साथ ऊपर तय ... जाने आंकड़ा
एंडी

जवाबों:


119

@ Andrew-beerman के निर्देश सही रास्ते पर हैं, हालांकि वे मेरे लिए बिल्कुल स्पष्ट नहीं हैं और जितना आवश्यक है उससे अधिक की सिफारिश करने के लिए लगता है। मैंने ऊपर के उत्तर और बग थ्रेड में एक सहायक पोस्ट के साथ एक साथ pieced किया।

इसे ठीक करने के लिए मैंने ये कदम उठाए हैं:

  1. अपने बैकअप लें my.cnf fileमें /etc/mysqlऔर हटाने या इसका नाम बदलना

    sudo mv /etc/mysql/my.cnf /etc/mysql/my.cnf.bak
    
  2. फ़ोल्डर /etc/mysql/mysql.conf.d/का उपयोग कर निकालें

    sudo rm -r /etc/mysql/mysql.conf.d/
    
  3. सत्यापित करें कि आपके पास my.cnfकहीं और फ़ाइल अटकी हुई नहीं है (मैंने अपने होम डायर में!) या /etc/alternatives/my.cnfउपयोग में है

    sudo find / -name my.cnf
    
  4. बैकअप और /etc/mysql/debian.cnfफ़ाइलों को हटा दें (यदि आवश्यक हो तो सुनिश्चित करें, लेकिन सिर्फ मामले में)

    sudo mv /etc/mysql/debian.cnf /etc/mysql/debian.cnf.bak
    sudo apt purge mysql-server mysql-server-5.7 mysql-server-core-5.7
    sudo apt install mysql-server
    
  5. यदि आपका syslog "mysqld: \ n" / dc/mysql/conf.d/ '"की प्रतीकात्मक लिंक नहीं पढ़ सकता है, तो एक त्रुटि दिखाई देती है:

    sudo ln -s /etc/mysql/mysql.conf.d /etc/mysql/conf.d
    

    तब सेवा के साथ शुरू करने में सक्षम होना चाहिए sudo service mysql start

यह काम कर गया!


17
इन सभी ऑपरेशनों के बाद (मैंने इसे पहले किया था) मेरे पास अभी भी एक ही त्रुटि मुद्दे हैं ...
सर्ग

5
आपको प्रत्येक my.cnf को * / etc / mysql निर्देशिका से हटाना होगा। My.cnf.backup, my.cnf.fallback और my.cnf.migrated की तलाश करें - इन सभी फ़ाइलों को भी हटाया जाना है (पहले बैकअप!)
Hitzi

8
@SergiiP sudo find / -name "my.cnf"काम आ सकता है।
स्टारबिम्रेनबोलाब्स

1
mysql-server-core- mysql-server-core-5.7 होना चाहिए। अन्यथा एक आकर्षण की तरह काम किया। धन्यवाद!
डेविड ताई

1
+1। आपने मेरा दिन बना दिया! सुबह और शाम भी! मैं फस गयी थी।
मैक्स युडिन

56

आज मुझे वही समस्या मिली, मैंने कई समाधानों को आजमाने के बाद पाया कि समस्या वह कमांड थी sudo systemctl disable mysql.serviceजिसका उपयोग मैंने MySQL ऑटो को अक्षम करने के लिए किया था, इसलिए इसे प्राप्त करने के लिए मैं कमांड का उपयोग करके फिर से MySQL सर्वर को फिर से सक्षम कर सकता हूं sudo systemctl enable mysql.serviceऔर फिर से अपग्रेड प्रक्रिया को चलाऊंगा और यह पूरी तरह से समाप्त हो गया।


5
मैं इसी समस्या में भाग गया और मेरे लिए उसी फिक्स ने काम किया।
एलन

5
मेरे लिए काम किया। क्या यहां हर समाधान, mysql ने एक के बाद एक काम किया।
बलोएज माइकालिक

6
यहाँ भी - यह शीर्ष पद होना चाहिए।
a1phanumeric

3
मेरे लिए भी काम किया! बहुत बहुत धन्यवाद। बस स्पष्ट होना, दौड़ना: sudo systemctl enable mysql.serviceऔर उसके बाद दौड़ना sudo apt install -f
फर्नांडो पलादिनी

यह सब मुझे करना था। मैंने @naruto द्वारा वर्णित ऑटोस्टार्ट को अक्षम कर दिया था। मैंने ऑटोस्टार्ट को सक्षम किया और "सुडोल एप अपग्रेड" चलाया। अब तय हो गया। शीर्ष उत्तर होना चाहिए। यह एक बहुत सरल, अधिक मानक और कम परेशानी प्रवण समाधान है।
जैक होल

20

आपके त्रुटि संदेश में यह पंक्ति है:

subprocess installed post-installation script returned error exit status 1

हालाँकि, यह installed post-installation scriptनाम से उल्लेखित नहीं है। बहुत छेड़छाड़ के बाद, मुझे पता चला कि इसका नाम (मेरे मामले में) है /var/lib/dpkg/info/mysql-server-5.7.postinst

इस फ़ाइल को sudo vi /var/lib/dpkg/info/mysql-server-5.7.postinst, या अपने पसंदीदा संपादक के साथ खोलें ।

शीर्ष, परिवर्तन लाइन 3 (या तो) पर: set -eकरने के लिए set -x, फ़ाइल सहेजें। (विकल्प -e"त्रुटियों पर बाहर निकलना" है, -xजिसका अर्थ है "स्पष्ट रूप से निष्पादित कमांड", संभवतः)

भागो sudo dpkg --configure -a --log /tmp/dpkg.log (- thelog विकल्प वैकल्पिक है)। आप यह भी apt upgradeजान सकते हैं कि क्या आप जानते हैं कि यह एकमात्र पैकेज होगा जिसे अपग्रेड किया जाएगा।

अब आपको mysql-server-5.7.postinstबैश स्क्रिप्ट का वर्बोज़ आउटपुट मिलता है , और आप यह पता लगा सकते हैं कि क्या गलत है।

मेरे मामले में यह असफल (पुनः) चलाने की कोशिश की mysql_upgrade, लेकिन मेरे अनुकूलित mysql स्थापना के लिए इसकी आवश्यकता नहीं थी। मुझे यकीन था कि मैंने इसे पहले, सफलतापूर्वक, और सभी को अच्छी तरह से चलाया है।

इसलिए मैंने 321 लाइन की सराहना की (पुराने mysqld रिलीज लाइन की कोशिश के लिए 281),

#mysql_upgrade --defaults-file=/etc/mysql/debian.cnf || result=$?

और कमांड जो पहले विफल हो गया है, sudo apt upgrade(इसे फिर से चलाएँ), सफलतापूर्वक समाप्त हो गया, और dpkg ने इस पैकेज के लिए त्रुटि स्थिति को हटा दिया।

अब आप सेट कर सकते हैं set -xकरने के लिए set -e(जैसा कि ऊपर उल्लेख)। और mysql- अपग्रेड लाइन को वैकल्पिक रूप से अनकम्फर्टेबल करता है।

यदि आपको अपने mysql डेटा विभाजन को एक गैरमानक स्थान पर ले जाना है तो अतिरिक्त कार्य की आवश्यकता हो सकती है। मैंने /var/lib/mysql/dataसिम्लिंक के माध्यम से एक अलग ड्राइव से मेरा स्थानांतरित किया । फिर आपको postinstस्क्रिप्ट हेरफेर से पहले, अस्थायी रूप से प्रतीकात्मक लिंक को हटाना पड़ सकता है । फिर पैकेज अपग्रेड को चलाने के बाद इसे फिर से बनाएं।

मायस्कल्ड डेबियन पैकेज के अगले मामूली संस्करण के उन्नयन के बाद, /var/lib/dpkg/info/mysql-server-5.7.postinstस्क्रिप्ट के साथ यह समस्या फिर से दिखाई दे सकती है।


मैंने सबकुछ शुद्ध करना और फिर समुदाय mysql-server संस्करण डाउनलोड करना और मैन्युअल रूप से यहां से इंस्टॉल करना: dev.mysql.com/downloads/mysql
RyanNerd

वास्तव में मेरे साथ भी यही हुआ और आपके कदमों ने इसे हल कर दिया। मेरे लिए मेरे mysql_upgrad कॉल 320 पर लाइन में था। क्या आप बता सकते हैं कि पोस्टपाइंट स्क्रिप्ट से कॉल करने पर यह गैर-शून्य मान क्यों देता है?
एमिलियोप्रेड्रोलो

@emiliopedrollo नहीं मैं यहाँ व्याख्या नहीं कर सकता। लेकिन मुझे लगता है कि लाइन नंबर अब 320 है क्योंकि हाल ही में पैकेज अनुरक्षकों ने पोस्टस्क्रिप्ट स्क्रिप्ट को बढ़ाया है, मैंने दूसरे दिन सॉफ्टवेयर-अपडेटर के अंतिम रन के दौरान एक ही चीज देखी है (जिसमें एक नया mysql-deb-package शामिल था) ।
knb

धन्यवाद! के साथ set -eमैं सटीक समस्या को हल करने में सक्षम था - MySQL में निर्दिष्ट ubuntu प्रणाली उपयोगकर्ता के लिए उपयोग नहीं था /etc/mysql/debian.cnf । इसलिए मैंने इस उपयोगकर्ता को MySQL में जोड़ा और विशेषाधिकार प्रदान किए, dpkgफिर से चला और यह काम किया!
एलन हैमिल्टन

17

यहाँ निर्देशों ने इसे मेरे सर्वर पर तय किया: https://bugs.mysql.com/bug.php?id=72722

मैं आपके सिस्टम को असंगत स्थिति में होने के दर्द को समझ सकता हूं लेकिन पूरी स्थिति के बारे में चिंता नहीं करने देता और सिस्टम को साफ करने के लिए कदम से कदम उठाता हूं।

पहले मशीन पर सभी mysql संकुल की वर्तमान स्थिति को देखने देता है: dpkg -l | grep mysql (कृपया पिछले कॉलम को छोड़कर आउटपुट पेस्ट करें)

पहला कॉलम पैकेज की वर्तमान स्थिति को दर्शाता है। यहां संभावित विकल्प दिए गए हैं:

ii) स्थापित आरसी) हटाए गए कॉन्फिग-फाइल्स (यह उन सभी पैकेजों की स्थिति होनी चाहिए, जिन्हें आपने remove एप्ट-गेट रिमूव ’के साथ हटा दिया है, जो कॉन्फिग-फाइल्स को अंडर / वगैरह नहीं हटाते हैं)

इस काम के लिए, आपको 'apt-get purge <pkg-name>' चलाना होगा, जब तक कि आपको उपरोक्त सूची में कोई पैकेज न दिखाई दे।

कृपया याद रखें कि कुछ गैर-mysql- सर्वर पैकेज जैसे कि python-mysql.connector और python-mysqldb, यदि इंस्टॉल किए गए हैं, तो उन्हें हटाए जाने की आवश्यकता नहीं है क्योंकि इस स्थिति पर उनका कोई प्रभाव नहीं पड़ता है - यदि हटाया गया तो उनका उपयोग करने वाले अनुप्रयोगों के लिए परेशानी हो सकती है।

हम निश्चित रूप से हमारे डॉक्स पर फिर से देखने की कोशिश करेंगे कि हम उपयोगकर्ताओं को इस मुसीबत में पड़ने से कैसे बचा सकते हैं। हमारे साथ विस्तार से अपनी प्रतिक्रिया साझा करने के लिए धन्यवाद।


2
के लिए धन्यवाद dpkg -l | grep mysql । इससे दिशा को समझने में मदद मिली।
मैक्स युडिन

शुद्ध करने के लिए यह आदेश गलत था क्योंकि sudo apt-get purge <pkg-name>मुझे इसे एक संपादन के साथ तय करना चाहिए : लेकिन मैंने यूनिकोड वर्णों का उपयोग <इसलिए किया क्योंकि अन्यथा यह प्रदर्शित नहीं होता। इस कमांड को कॉपी करते हुए चेतावनी दी जानी चाहिए
टोस्कन

3

मेरे मामले में, स्ट्रेस के साथ, मैंने देखा कि / var / run / mysqld / मौजूद नहीं था और mysqld फ़ाइल mysqld.sock नहीं बना सकता है।

इन आदेशों से मेरी समस्या हल हो गई:

mkdir /var/run/mysqld
chown mysql.mysql /var/run/mysqld
chmod 700 /var/run/mysqld

अभी:

systemctl start mysql

और mysql फिर से काम करता है :)


मेरा सुझाव है कि आप इन पंक्तियों को / usr / share / mysql / mysql-systemd-start पर पंक्ति 25 से शुरू करना चाहते हैं, फिर आपको हर रिबूट के बाद इस निर्देशिका को फिर से बनाना नहीं पड़ेगा (खेद है कि यह पंक्ति इस टिप्पणी में काम नहीं करती है) : अगर [ ! -d / run / msyqld]; उसके बाद mkdir -p -m0755 / run / mysqld || {गूंज "बनाने / चलाने / mysqld करने में असमर्थ"; बाहर निकलें 1; } chown mysql: mysql / run / mysqld || {प्रतिध्वनि "चांस / रन / मायस्क्ल्ड में असमर्थ"; बाहर निकलें 1; } फाई
स्कोबायडू

3

मेरे मामले में मैं समस्या को जोड़कर हल कर सकता था

# Allow log file access
/home/system/var/log/mysql.err rw,
/home/system/var/log/mysql.log rw,
/home/system/var/log/mysql/ r,
/home/system/var/log/mysql/** rw,

सेवा /etc/apparmor.d/local/usr.sbin.mysqld

अधिक जानकारी के लिए स्टैकओवरफ़्लो में मेरे उत्तर (क्रिस्टोफ़्स द्वारा) पर एक नज़र डालें ।


0

मेरी भी यही समस्या थी। मैंने कई बार mysql को फिर से स्थापित करने की कोशिश की, लेकिन कोई सफलता नहीं मिली।

मुझे पता चला कि मेरे लिए समस्या यह थी कि एक और mysql प्रक्रिया पहले से ही चल रही थी।

विवरण में:

मैंने ध्यान से पढ़ने के बाद लॉग इन किया /var/log/mysql/error.logऔर पाया:

[त्रुटि] सर्वर शुरू नहीं कर सकते: टीसीपी / आईपी पोर्ट पर बाँध: पहले से उपयोग में पता

[त्रुटि] क्या आपके पास पहले से ही पोर्ट पर चलने वाला एक और mysqld सर्वर है: ३३०६?

ऐसा लगता है कि एक अन्य एप्लिकेशन पहले से ही पोर्ट का उपयोग कर रहा था।

मैंने इसका उपयोग करके जाँच की ps -aux | grep 3306:

$ ps -aux | grep 3306
milkovs+  6802  0.0  0.0  16336  1084 pts/19   S+   21:39   0:00 grep --color=auto 3306
mysql    14706  0.0  0.3 1270192 13916 pts/2   Sl   Aug19   0:29 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --skip-grant-tables --log-error=/var/log/mysql/error.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306 --log-syslog=1 --log-syslog-facility=daemon --log-syslog-tag=

और मैंने दौड़ने की प्रक्रिया को मार दिया sudo kill -15 14706

फिर मैंने mysql शुरू किया: /etc/init.d/mysql start

अंत में mysql मेरे लिए काम करता है! मुझे उम्मीद है कि यह किसी की मदद करता है।


0

इस पृष्ठ पर किसी भी उत्तर ने मेरे लिए काम नहीं किया।

मैंने Oracle रेपो से MySQL डाउनलोड पेज पर जाना , डाउनलोड करना mysql-apt-config_0.8.8-1_all.debऔर MySQL स्थापित करना समाप्त किया :

sudo dpkg -i mysql-apt-config_0.8.8-1_all.deb
sudo apt update
sudo apt install mysql-server

2
isntall-> installटाइपो। बेवकूफ एसओ मुझे एक चरित्र को सही करने की अनुमति नहीं देता है।
Csaba Toth

आप mysql
Sinscary

@Sinscary यह उत्तर थोड़ी देर से है, लेकिन यह शायद इसलिए था क्योंकि उनके पास सिस्टम पैकेज प्रबंधक की तुलना में एक नया संस्करण था?
ओस्ट्रोकैच

0

मुझे अब कुछ सर्वरों पर समस्या आ गई है। फ़िक्स को स्थापित करने के लिए फ़िपमैडमिन - इंस्टॉलेशन को चलाना था

जो ऊपर हल किया (बाद में mysql को छूने की कोई आवश्यकता नहीं है)

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