web-dev-qa-db-fra.com

La mise à niveau vers MySQL 5.7.15 plante à Ubuntu 16.04

La nuit dernière, j'ai essayé de mettre à niveau mon système d'exploitation Ubuntu et MySQL 5.7.15 a été l'un des changements. Il semble que la mise à niveau soit un succès car mysql fonctionne correctement, mais le processus d’installation a cessé de fonctionner avec ce message:

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

Je ne peux pas annuler le processus d'installation de la manière requise et je dois juste le tuer. Cela peut donc poser problème et pour chaque autre installation (à l’avenir), il essaie de le faire à nouveau.

Comment empêcher cette mise à niveau ou la résoudre?

12
Omid

Cette solution a résolu mon problème:

  1. Sauvegardez vos fichiers de base de données avec les autorisations suivantes:

    Sudo cp -avt /your/backup/directory /var/lib/mysql /etc/mysql/my.cnf
    
  2. Supprimer les fichiers mysql:

    Sudo rm -rv /etc/mysql 
    
  3. Supprimez complètement MySQL en exécutant:

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

    L'utilisation de Synaptic est recommandée.

  4. Créez ces dossiers:

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

    L'installation de mysql ne l'a pas fait automatiquement et je ne sais pas pourquoi.

  5. Installez MySQL à nouveau

    Sudo apt install mysql-server
    

    J'ai utilisé Sudo apt install lamp-server^ à la place pour installer d'autres dépendances pour le développement de PHP.

  6. Arrêtez MySQL:

    Sudo service mysql stop 
    
  7. Restaurer les bases de données et les fichiers:

    Sudo cp -a /your/backup/directory/mysql /var/lib   
    Sudo cp /your/backup/directory/my.cnf /etc/mysql 
    
  8. Redémarrez MySQL:

    Sudo service mysql start 
    
11
Omid

J'ai réussi à résoudre ce problème sans avoir à tout purger. Il semble que le problème est que la base de données du schéma sys n'a jamais été créée. Voici donc la solution:

  1. Clone https://github.com/mysql/mysql-sys et cd dans le dossier cloné.
  2. Dans un terminal, lancez mysql -u root -p <./sys_57.sql (ou sys_56.sql, selon votre version)

Profitez à nouveau de mysql_upgrade. Je suppose que cela a probablement été, une mise à niveau des scripts gâchis.

4
Asefa Tasew

J'ai eu ce problème aussi. Chaque fois que j'ai commencé à obtenir et à installer, le processus se bloquait après ou pendant la mise à jour de la base de données. Aucune des autres solutions ici n'a fonctionné.

À la fin j'ai purgé

Sudo apt purge mysql-server mysql-server-5.7

Et suivi l’installation manuelle à partir des instructions pour mysql ici

J'ai ensuite écrasé le répertoire de données avec mes anciennes données

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

et a finalement ajouté un service systemd comme celui-ci

/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

Puis couru

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

Ensuite, tout semblait fonctionner comme avant et mysql ne cassait pas les mises à jour du système

L’inconvénient, bien sûr, c’est que j’aurai besoin de faire des mises à jour manuelles à l’avenir.

2
Jeremy French

Si votre compte root @localhost n'a pas de mot de passe, il y a un bogue dans le processus de post-installation, comme indiqué ici (voir notamment le dernier commentaire du sujet)

  • purger tous les fichiers TMP* dans /var/lib/mysql-files
  • éditez le fichier /var/lib/dpkg/info/mysql-server-5.7.postinst et commentez (utilisez #) la ligne 370:

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

  • relancez Sudo dpkg --configure -a

0
Gab