Nâng cấp lên MySQL 5.7.15 gặp sự cố trên Ubuntu 16.04


13

Đêm qua tôi đã cố gắng nâng cấp hệ điều hành Ubuntu và MySQL 5.7.15 là một trong những thay đổi. Có vẻ như việc nâng cấp thành công vì mysql đang hoạt động, nhưng quá trình cài đặt đã ngừng hoạt động với thông báo này:

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

Tôi không thể hủy bỏ quá trình cài đặt theo cách yêu cầu và phải giết nó. Vì vậy, nó có thể gây ra một số vấn đề và cho mọi cài đặt khác (trong tương lai), nó cố gắng thực hiện lại.

Làm thế nào để ngăn chặn việc nâng cấp này hoặc giải quyết nó?

Câu trả lời:


12

Giải pháp này đã giải quyết vấn đề của tôi:

  1. Sao lưu các tệp cơ sở dữ liệu của bạn với quyền:

    sudo cp -avt /your/backup/directory /var/lib/mysql /etc/mysql/my.cnf
    
  2. Xóa các tập tin mysql:

    sudo rm -rv /etc/mysql 
    
  3. Loại bỏ hoàn toàn MySQL thông qua chạy:

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

    Nên sử dụng Synaptic .

  4. Tạo các thư mục này:

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

    Thiết lập mysql không tự động làm và tôi không biết tại sao.

  5. Cài đặt lại MySQL

    sudo apt install mysql-server
    

    Tôi đã sử dụng sudo apt install lamp-server^thay thế để cài đặt các phụ thuộc khác để phát triển PHP.

  6. Dừng MySQL:

    sudo service mysql stop 
    
  7. Khôi phục cơ sở dữ liệu và tệp:

    sudo cp -a /your/backup/directory/mysql /var/lib   
    sudo cp /your/backup/directory/my.cnf /etc/mysql 
    
  8. Khởi động lại MySQL:

    sudo service mysql start 
    

1
dpkg: lỗi trong khi dọn dẹp: quá trình con được cài đặt tập lệnh sau khi cài đặt đã trả về trạng thái thoát lỗi 1 Lỗi gặp phải khi xử lý: mysql-server-5.7
Stevie G

Điều quan trọng là loại bỏ: sudo rm /var/cache/debconf/config.dat, sudo rm /var/cache/debconf/passwords.datsudo rm /var/cache/debconf/templates.dat. Sau đó thanh lọc mọi thứ. Sau đó thực hiện khởi động lại hệ thống.
Stevie G

Tôi đã có cùng một vấn đề và giải quyết nó với thủ tục này. Tôi khuyên bạn nên khởi động lại hệ thống sau khi thanh trừng MySQL. Có vẻ như điều này ngăn chặn vấn đề được báo cáo bởi Stevie.
Tsutomu

4

Tôi quản lý để sửa lỗi này mà không phải thanh lọc mọi thứ. Có vẻ như vấn đề là cơ sở dữ liệu lược đồ sys chưa bao giờ được tạo, vì vậy đây là giải pháp:

  1. Nhân bản https://github.com/mysql/mysql-sys và cd vào thư mục nhân bản.
  2. Trong một thiết bị đầu cuối, hãy chạy mysql -u root -p <./sys_57.sql (hoặc sys_56.sql, tùy thuộc vào phiên bản của bạn)

Thưởng thức mysql_upTHER làm việc lại. Tôi đoán điều này có lẽ là, một kịch bản nâng cấp gây rối.


Vâng, đó là một vấn đề với việc nâng cấp cơ sở dữ liệu. Thật không may, tôi không thể kiểm tra giải pháp của bạn nữa để xem nó có hoạt động hay không.
Omid

Tôi đã thử giải pháp này trên bản cài đặt mysql 5.7.22 đang báo cáo "Bản cài đặt này của MySQL đã được nâng cấp lên 5.7.22, hãy sử dụng - nếu bạn vẫn cần chạy mysql_upTHER" và nó hoạt động như một bùa mê
henrik

2

Tôi cũng có vấn đề này Mỗi khi tôi bắt đầu apt get và cài đặt, quá trình sẽ bị treo sau hoặc trong khi cập nhật DB. Không có giải pháp nào khác ở đây làm việc.

Cuối cùng tôi đã thanh trừng

sudo apt purge mysql-server mysql-server-5.7

Và làm theo hướng dẫn cài đặt từ hướng dẫn cho mysql tại đây

Sau đó tôi ghi đè lên thư mục dữ liệu với dữ liệu cũ của tôi

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

và cuối cùng đã thêm một dịch vụ systemd như thế này

/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

Sau đó chạy

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

Sau đó, mọi thứ dường như vẫn hoạt động như trước và mysql không phá vỡ các bản cập nhật hệ thống

Nhược điểm, tất nhiên, là tôi sẽ cần phải cập nhật thủ công trong tương lai.


1

Nếu localhosttài khoản root @ của bạn không có mật khẩu thì có một lỗi trong quá trình cài đặt bài đăng như đã nêu ở đây (xem đặc biệt là nhận xét cuối cùng của chuỗi)

  • thanh lọc tất cả TMP*các tập tin trong/var/lib/mysql-files
  • chỉnh sửa tệp /var/lib/dpkg/info/mysql-server-5.7.postinstvà nhận xét (sử dụng #) dòng 370:

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

  • chạy lại sudo dpkg --configure -a


Trời ơi! <3 Bạn đã cứu mạng tôi: p Lưu ý cho hậu thế: bạn có thể muốn ngăn cập nhật mysql tiếp theo (sẽ thất bại theo cách tương tự) bằng cách sử dụngapt-mark hold mysql-server-5.7
Gab - còn lại của Monica
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.