การอัพเกรดเป็น MySQL 5.7.15 ขัดข้องบน Ubuntu 16.04


13

เมื่อคืนฉันพยายามอัพเกรด Ubuntu OS และ MySQL 5.7.15 เป็นหนึ่งในการเปลี่ยนแปลง ดูเหมือนว่าการอัพเกรดจะประสบความสำเร็จอย่างสมบูรณ์เนื่องจาก mysql ทำงานได้ดี แต่การติดตั้ง Proccess หยุดทำงานกับข้อความนี้:

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

ฉันไม่สามารถยกเลิกการติดตั้งได้สำเร็จในแบบที่ต้องการและเพียงแค่ต้องฆ่ามัน ดังนั้นอาจทำให้เกิดปัญหาและสำหรับการติดตั้งอื่น ๆ (ในอนาคต) จะพยายามทำอีกครั้ง

จะป้องกันการอัพเกรดนี้หรือแก้ปัญหาได้อย่างไร?

คำตอบ:


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
    

    แนะนำให้ใช้Synaptic

  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
Stevie G

สิ่งที่สำคัญคือการลบ: sudo rm /var/cache/debconf/config.dat, และsudo rm /var/cache/debconf/passwords.dat sudo rm /var/cache/debconf/templates.datจากนั้นล้างทุกอย่าง จากนั้นทำการรีบูตระบบ
Stevie G

ฉันมีปัญหาเดียวกันและแก้ไขด้วยขั้นตอนนี้ ฉันแนะนำให้รีบูตระบบหลังจากกำจัด MySQL ดูเหมือนว่าสิ่งนี้จะช่วยป้องกันปัญหาที่สตีวี่รายงาน
Tsutomu

4

ฉันจัดการเพื่อแก้ไขปัญหานี้โดยไม่ต้องล้างทุกอย่าง ดูเหมือนว่าปัญหาคือฐานข้อมูล sys schema ไม่เคยสร้างดังนั้นนี่คือวิธีแก้ปัญหา:

  1. โคลนhttps://github.com/mysql/mysql-sysและ cd ลงในโฟลเดอร์โคลน
  2. ในเทอร์มินัลให้รัน mysql -u root -p <./sys_57.sql (หรือ sys_56.sql ขึ้นอยู่กับเวอร์ชันของคุณ)

สนุกกับ mysql_upgrade ทำงานอีกครั้ง ฉันคิดว่านี่น่าจะเป็นสคริปต์อัพเกรดที่ยุ่งเหยิง


ใช่มันเป็นปัญหากับการอัพเกรดฐานข้อมูล น่าเสียดายที่ฉันไม่สามารถทดสอบโซลูชันของคุณอีกต่อไปเพื่อดูว่าทำงานได้หรือไม่
Omid

ฉันลองใช้วิธีแก้ไขปัญหานี้ในการติดตั้ง mysql 5.7.22 ของฉันที่รายงานว่า "การติดตั้ง MySQL นี้ได้รับการอัพเกรดเป็น 5.7.22 แล้วใช้ - บังคับถ้าคุณยังต้องการเรียกใช้ mysql_upgrade" และใช้งานได้อย่างมีเสน่ห์
henrik

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บัญชีroot @ ของคุณไม่มีรหัสผ่านแสดงว่ามีข้อผิดพลาดในกระบวนการติดตั้งตามที่ระบุไว้ที่นี่ (ดูความคิดเห็นล่าสุดของเธรดโดยเฉพาะ)

  • ล้าง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 คุณช่วยชีวิตฉันไว้: p หมายเหตุสำหรับลูกหลาน: คุณอาจต้องการป้องกันการอัพเดท mysql เพิ่มเติม (ซึ่งจะล้มเหลวในลักษณะเดียวกัน) โดยใช้apt-mark hold mysql-server-5.7
Gab - ปล่อยไว้ที่ Monica
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.