L'aggiornamento a MySQL 5.7.15 si arresta in modo anomalo su Ubuntu 16.04


13

Ieri sera ho provato ad aggiornare il mio sistema operativo Ubuntu e MySQL 5.7.15 è stata una delle modifiche. Sembra che l'aggiornamento abbia esito positivo perché mysql funziona correttamente, ma il processo di installazione ha smesso di funzionare con questo messaggio:

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

Non riesco ad annullare il processo di installazione in modo reqular e devo solo ucciderlo. Quindi potrebbe causare qualche problema e anche per ogni altra installazione (in futuro) prova a farlo di nuovo.

Come impedire questo aggiornamento o risolverlo?

Risposte:


12

Questa soluzione ha risolto il mio problema:

  1. Eseguire il backup dei file del database con autorizzazioni:

    sudo cp -avt /your/backup/directory /var/lib/mysql /etc/mysql/my.cnf
    
  2. Elimina i file mysql:

    sudo rm -rv /etc/mysql 
    
  3. Rimuovi MySQL completamente eseguendo:

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

    Si consiglia l' uso di Synaptic .

  4. Crea queste cartelle:

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

    mysql setup non lo ha fatto automaticamente e non so perché.

  5. Installa nuovamente MySQL

    sudo apt install mysql-server
    

    Ho usato sudo apt install lamp-server^invece per installare altre dipendenze per lo sviluppo di PHP.

  6. Ferma MySQL:

    sudo service mysql stop 
    
  7. Ripristina database e file:

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

    sudo service mysql start 
    

1
dpkg: errore durante la pulizia: lo script post-installazione installato sottoprocesso ha restituito lo stato di uscita dell'errore 1 Si sono verificati errori durante l'elaborazione: mysql-server-5.7
Stevie G

Cosa fondamentale è la rimozione: sudo rm /var/cache/debconf/config.dat, sudo rm /var/cache/debconf/passwords.date sudo rm /var/cache/debconf/templates.dat. Quindi eliminare tutto. Quindi eseguire un riavvio del sistema.
Stevie G,

Ho avuto lo stesso problema e l'ho risolto con questa procedura. Consiglio di riavviare il sistema dopo aver eliminato MySQL. Sembra che ciò prevenga il problema segnalato da Stevie.
Tsutomu,

4

Sono riuscito a risolvere questo problema senza dover eliminare tutto. Sembra che il problema sia che il database dello schema sys non è mai stato creato, quindi ecco la soluzione:

  1. Clonare https://github.com/mysql/mysql-sys e cd nella cartella clonata.
  2. In un terminale, eseguire mysql -u root -p <./sys_57.sql (o sys_56.sql, a seconda della versione)

Divertiti a lavorare di nuovo con mysql_upgrade. Immagino che probabilmente lo fosse, un aggiornamento degli script incasinato.


Sì, è un problema con l'aggiornamento dei database. Purtroppo non riesco più a testare la tua soluzione per vedere se funziona o no.
Omid

Ho provato questa soluzione sulla mia installazione mysql 5.7.22 che riportava "Questa installazione di MySQL è già stata aggiornata a 5.7.22, usa --force se hai ancora bisogno di eseguire mysql_upgrade" e ha funzionato come un incantesimo
henrik

2

Ho avuto anche questo problema. Ogni volta che ho avviato apt get e installato il processo si bloccava dopo o durante l'aggiornamento del DB. Nessuna delle altre soluzioni qui ha funzionato.

Alla fine ho eliminato

sudo apt purge mysql-server mysql-server-5.7

E ho seguito l'installazione manuale dalle istruzioni per mysql qui

Ho quindi sovrascritto la directory dei dati con i miei vecchi dati

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

e infine aggiunto un servizio systemd come questo

/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

Quindi corse

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

Quindi tutto sembrava funzionare come prima e mysql non stava rompendo gli aggiornamenti di sistema

Il rovescio della medaglia, ovviamente, è che dovrò fare aggiornamenti manuali in futuro.


1

Se il tuo localhostaccount root @ non ha password, allora c'è un bug nel processo postinstallazione come indicato qui (vedi in particolare l'ultimo commento della discussione)

  • eliminare tutti i TMP*file/var/lib/mysql-files
  • modifica il file /var/lib/dpkg/info/mysql-server-5.7.postinste commenta (usando #) la riga 370:

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

  • eseguire di nuovo sudo dpkg --configure -a


Oh mio caro! <3 Mi hai salvato la vita: p Nota per i posteri: potresti voler impedire ulteriori aggiornamenti mysql (che falliranno allo stesso modo) usandoapt-mark hold mysql-server-5.7
Gab - rimasto su Monica il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.