उबंटू 16.04 पर MySQL 5.7.15 के अपग्रेड्स


13

कल रात मैंने अपने उबंटू ओएस को अपग्रेड करने की कोशिश की और MySQL 5.7.15 बदलावों में से एक था। ऐसा लगता है कि अपग्रेड करना सफल है क्योंकि mysql पूरी तरह से काम कर रहा है, लेकिन इंस्टॉलेशन प्रॉसेस ने इस संदेश के साथ काम करना बंद कर दिया है:

This installation of MySQL is already upgraded to 5.7.15, 
use --force if you still need to run mysql_upgrade

मैं reqular तरीके से अधिष्ठापन को रद्द नहीं कर सकता और बस इसे मारना है। तो यह कुछ समस्या पैदा कर सकता है और हर दूसरे इंस्टॉलेशन के लिए भी (भविष्य में) इसे फिर से करने की कोशिश करता है।

इस अपग्रेड को कैसे रोका जाए या इसे कैसे हल किया जाए?

जवाबों:


12

इस समाधान से मेरी समस्या हल हो गई:

  1. अनुमतियों के साथ अपने डेटाबेस फ़ाइलों का बैक-अप करें:

    sudo cp -avt /your/backup/directory /var/lib/mysql /etc/mysql/my.cnf
    
  2. Mysql फ़ाइलें हटाएँ:

    sudo rm -rv /etc/mysql 
    
  3. चलने के माध्यम से पूरी तरह से MySQL निकालें:

    sudo apt purge mysql-server mysql-server-5.7 mysql-server-core-5.7 mysql-client-5.7 mysql-client-core-5.7
    

    सिनैप्टिक के उपयोग की सिफारिश की जाती है।

  4. ये फ़ोल्डर बनाएँ:

    sudo mkdir -p /etc/mysql/conf.d
    

    mysql सेटअप ने इसे स्वचालित रूप से नहीं किया और मुझे पता नहीं क्यों।

  5. MySQL को फिर से इंस्टॉल करें

    sudo apt install mysql-server
    

    मैंने sudo apt install lamp-server^PHP विकास के लिए अन्य निर्भरता स्थापित करने के बजाय उपयोग किया ।

  6. MySQL बंद करो:

    sudo service mysql stop 
    
  7. डेटाबेस और फ़ाइलों को पुनर्स्थापित करें:

    sudo cp -a /your/backup/directory/mysql /var/lib   
    sudo cp /your/backup/directory/my.cnf /etc/mysql 
    
  8. MySQL को पुनरारंभ करें:

    sudo service mysql start 
    

1
dpkg: सफाई करते समय त्रुटि: उप-संस्थापन पोस्ट-इंस्टॉलेशन स्क्रिप्ट लौटाया गया त्रुटि से बाहर निकलने की स्थिति 1 प्रसंस्करण के दौरान त्रुटियों का सामना करना पड़ा: mysql-server-5.7
स्टीव

कुंजी बात को हटा रहा है: sudo rm /var/cache/debconf/config.dat, sudo rm /var/cache/debconf/passwords.datऔर sudo rm /var/cache/debconf/templates.dat। फिर सब कुछ शुद्ध। फिर एक सिस्टम रिबूट करें।
स्टीव जी

मुझे एक ही समस्या थी और इसे इस प्रक्रिया से हल किया। मैं MySQL को शुद्ध करने के बाद एक सिस्टम रिबूट की सिफारिश करता हूं। ऐसा लगता है कि यह स्टीवी द्वारा रिपोर्ट किए गए मुद्दे को रोकता है।
त्सुतोमू

4

मैं सब कुछ शुद्ध करने के लिए बिना इसे ठीक करने में कामयाब रहा। ऐसा लगता है कि समस्या यह है कि sys स्कीमा डेटाबेस कभी नहीं बनाया गया था, इसलिए यहाँ समाधान है:

  1. क्लोन फ़ोल्डर में क्लोन https://github.com/mysql/mysql-sys और cd।
  2. किसी टर्मिनल में, mysql -u root -p </ .sys_57.sql (या sys_56.sql, अपने संस्करण के आधार पर) चलाएं

Mysql_upgrade फिर से काम करने का आनंद लें। मुझे लगता है कि यह संभवतः एक अपग्रेडिंग स्क्रिप्ट गड़बड़ थी।


हाँ यह डेटाबेस के उन्नयन के साथ एक मुद्दा है। दुर्भाग्य से मैं आपके समाधान का परीक्षण नहीं कर सकता कि यह देखना है कि यह काम कर रहा है या नहीं।
ओमिड

मैंने अपने mysql 5.7.22 इंस्टॉलेशन पर इस समाधान की कोशिश की, जो रिपोर्ट कर रहा था "MySQL की यह इंस्टॉलेशन पहले से ही 5.7.22 पर अपग्रेड हो गई है, उपयोग करें - यदि आपको अभी भी mysql_upgrad को चलाने की आवश्यकता है" और यह एक आकर्षण की तरह काम करता है
hricric

2

मेरा भी यह मुद्दा था। हर बार जब मैंने शुरुआत की और स्थापित किया तो यह प्रक्रिया डीबी अपडेट के दौरान या उसके बाद लटकेगी। यहां किसी भी अन्य समाधान ने काम नहीं किया।

अंत में मैंने पर्स दिया

sudo apt purge mysql-server mysql-server-5.7

और यहां mysql के निर्देशों से मैन्युअल इंस्टॉल का पालन किया

फिर मैंने अपने पुराने डेटा के साथ डेटा डायरेक्टरी को ओवरवोट कर दिया

sudo cp -Rfv /var/lib/mysql /usr/local/mysql/data

और अंत में इस तरह एक systemd सेवा को जोड़ा

/lib/systemd/system/mysql.service

[Unit]
Description=MySQL Server
After=syslog.target
After=network.target

[Service]
Type=simple
PermissionsStartOnly=true
ExecStartPre=/bin/mkdir -p /var/run/mysqld
ExecStartPre=/bin/chown mysql:mysql -R /var/run/mysqld
ExecStart=/usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/lib/mysql/plugin --log-error=/var/log/mysql/error.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306
TimeoutSec=300
PrivateTmp=true
User=mysql
Group=mysql
WorkingDirectory=/usr

[Install]
WantedBy=multi-user.target

फिर दौड़ा

# systemctl daemon-reload
# systemctl enable mysql
# systemctl start mysql

तब सब कुछ पहले की तरह काम करता लग रहा था और mysql सिस्टम अपडेट नहीं तोड़ रहा था

निश्चित रूप से नकारात्मक पक्ष यह है कि मुझे भविष्य में मैन्युअल अपडेट करने की आवश्यकता होगी।


1

यदि आपके रूट @ localhostखाते का कोई पासवर्ड नहीं है, तो यहां बताई गई स्थापना के बाद की प्रक्रिया में एक बग है (विशेष रूप से थ्रेड की अंतिम टिप्पणी देखें)

  • सभी TMP*फ़ाइलों को शुद्ध करें/var/lib/mysql-files
  • फ़ाइल को संपादित करें /var/lib/dpkg/info/mysql-server-5.7.postinstऔर टिप्पणी करें (# का उपयोग करके) लाइन 370:

    echo "ALTER USER 'root'@'localhost' IDENTIFIED WITH 'auth_socket';" >> "$initfile"

  • दोबारा दौडो sudo dpkg --configure -a


अरे बाप रे ! <3 आपने मेरी जान बचाई: पी नोट फॉर पोस्टरिटी: आप आगे mysql अपडेट (जो उसी तरह से विफल हो जाएगा) को रोकने के लिए उपयोग कर सकते हैंapt-mark hold mysql-server-5.7
गब - मोनिका
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.