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?
Cette solution a résolu mon problème:
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
Supprimer les fichiers mysql:
Sudo rm -rv /etc/mysql
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.
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.
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.
Arrêtez MySQL:
Sudo service mysql stop
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
Redémarrez MySQL:
Sudo service mysql start
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:
Profitez à nouveau de mysql_upgrade. Je suppose que cela a probablement été, une mise à niveau des scripts gâchis.
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.
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)
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