Aktualizacja do MySQL 5.7.15 ulega awarii na Ubuntu 16.04

13

Ostatniej nocy próbowałem zaktualizować system Ubuntu OS, a MySQL 5.7.15 był jedną ze zmian. Wydaje się, że aktualizacja się udała, ponieważ mysql działa poprawnie, ale proces instalacji przestał działać z tym komunikatem:

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

Nie mogę anulować procesu instalacji w odpowiedni sposób i po prostu muszę go zabić. Może to powodować problemy, a także przy każdej innej instalacji (w przyszłości) próbuje to zrobić ponownie.

Jak zapobiec tej aktualizacji lub rozwiązać ją?

Omid
źródło

Odpowiedzi:

12

To rozwiązanie rozwiązało mój problem:

  1. Wykonaj kopię zapasową plików bazy danych z uprawnieniami:

    sudo cp -avt /your/backup/directory /var/lib/mysql /etc/mysql/my.cnf
    
  2. Usuń pliki mysql:

    sudo rm -rv /etc/mysql 
    
  3. Usuń MySQL całkowicie, uruchamiając:

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

    Zalecane jest użycie Synaptic .

  4. Utwórz te foldery:

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

    Instalator mysql nie zrobił tego automatycznie i nie wiem dlaczego.

  5. Zainstaluj MySQL ponownie

    sudo apt install mysql-server
    

    sudo apt install lamp-server^Zamiast tego użyłem innych zależności do programowania PHP.

  6. Zatrzymaj MySQL:

    sudo service mysql stop 
    
  7. Przywróć bazy danych i pliki:

    sudo cp -a /your/backup/directory/mysql /var/lib   
    sudo cp /your/backup/directory/my.cnf /etc/mysql 
    
  8. Uruchom ponownie MySQL:

    sudo service mysql start 
    
Omid
źródło
1
dpkg: błąd podczas czyszczenia: skrypt podprocesowy zainstalowany poinstalacyjny skrypt zwrócił status wyjścia z błędu 1 Napotkano błędy podczas przetwarzania: mysql-server-5.7
Stevie G
Kluczową sprawą jest usunięcie: sudo rm /var/cache/debconf/config.dat, sudo rm /var/cache/debconf/passwords.dati sudo rm /var/cache/debconf/templates.dat. Następnie oczyść wszystko. Następnie uruchom ponownie system.
Stevie G,
Miałem ten sam problem i rozwiązałem go za pomocą tej procedury. Polecam ponowne uruchomienie systemu po wyczyszczeniu MySQL. Wygląda na to, że zapobiega to zgłoszonemu przez Stevie problemowi.
Tsutomu
4

Udało mi się to naprawić bez konieczności czyszczenia wszystkiego. Wydaje się, że problem polega na tym, że baza danych schematu sys nigdy nie została utworzona, więc oto rozwiązanie:

  1. Klonuj https://github.com/mysql/mysql-sys i cd do sklonowanego folderu.
  2. W terminalu uruchom mysql -u root -p <./sys_57.sql (lub sys_56.sql, w zależności od wersji)

Ciesz się, że mysql_upgrade działa ponownie. Myślę, że to prawdopodobnie był bałagan aktualizacji skryptów.

Asefa Tasew
źródło
Tak, jest to problem z aktualizacją baz danych. Niestety nie mogę już przetestować Twojego rozwiązania, aby sprawdzić, czy działa.
Omid
Wypróbowałem to rozwiązanie w mojej instalacji mysql 5.7.22, która raportowała: „Ta instalacja MySQL została już zaktualizowana do wersji 5.7.22, użyj opcji --force, jeśli nadal musisz uruchomić mysql_upgrade” i działało to jak urok
henrik
2

Też miałem ten problem. Przy każdym uruchomieniu apt get i instalacji proces zawiesza się po aktualizacji DB lub w jej trakcie. Żadne z innych rozwiązań tutaj nie zadziałało.

W końcu oczyściłem się

sudo apt purge mysql-server mysql-server-5.7

I wykonałem ręczną instalację z instrukcji dla mysql tutaj

Następnie nadpisałem katalog danych moimi starymi danymi

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

i wreszcie dodał taką usługę systemową

/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

Potem pobiegł

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

Wtedy wszystko wydawało się działać jak wcześniej i mysql nie psuje aktualizacji systemu

Minusem jest oczywiście to, że w przyszłości będę musiał dokonać ręcznych aktualizacji.

Jeremy French
źródło
1

Jeśli twoje localhostkonto root @ nie ma hasła, oznacza to błąd w procesie ponownej instalacji, jak podano tutaj (zobacz w szczególności ostatni komentarz wątku)

  • wyczyść wszystkie TMP*pliki/var/lib/mysql-files
  • edytuj plik /var/lib/dpkg/info/mysql-server-5.7.postinsti skomentuj (używając #) linię 370:

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

  • uruchomić ponownie sudo dpkg --configure -a

Gab - pozostała Monica
źródło
O mój drogi! <3 Uratowałeś mi życie: p Uwaga dla potomności: możesz chcieć zapobiec dalszej aktualizacji mysql (która zakończy się niepowodzeniem w ten sam sposób) za pomocąapt-mark hold mysql-server-5.7
Gab - pozostawionej Monice