web-dev-qa-db-fra.com

Échec du démarrage de mysql.service pour MySQL 5.6 sur Ubuntu 16.04

Après avoir suivi instructions dans cet article sur la façon d’installer MySQL 5.6 sur une installation 5.7 existante sur Ubuntu 16.04, plusieurs problèmes de démarrage du service se sont produits.

Tout d'abord, c'est arrivé:

Failed to start mysql.service: Unit mysql.service is masked

Ce qui a été résolu en exécutant systemctl unmask mysql.service. Cependant, à plusieurs reprises, j'ai eu ce message:

Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.

L'inspection de systemctl status mysql.service a montré:

Failed to start LSB: Start and stop the mysql database server daemon.
3
M1ke

Le correctif de ce problème contenait plusieurs étapes, y compris différents journaux de débogage, puis des indices dans ces journaux. Je les documente pour aider les autres - vos problèmes pourraient être différents mais ce processus devrait vous aider à découvrir ce qui ne va pas:

Tout d'abord, journalctl -xe contient beaucoup plus d'informations. Dans mon cas, il contenait:

kernel: audit: type=1400 audit(1528794958.103:169): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/etc/mysql/my.cnf.fallback"

Cela pourrait être corrigé avec vi /etc/apparmor.d/usr.sbin.mysqld et en ajoutant des lignes pour:

/etc/mysql/conf.d/mysql.cnf/ r,
/etc/mysql/conf.d/mysql.cnf/* r,
/etc/mysql/my.cnf.fallback r,

Un point intéressant est qu’il a besoin d’une ligne distincte pour un répertoire et de fichiers génériques qui le composent. Cela peut être courant pour certaines applications Unix, mais toutes ne peuvent pas vous tromper.

Une fois que toutes les modifications apportées à l’application ont été effectuées, le système ne démarre toujours pas et cette fois, la commande journalctl -xe ne produit rien d’utile.

J'ai ensuite pu exécuter Sudo -u mysql mysqld pour essayer de démarrer le démon manuellement. Cela montrait un échec au démarrage d'InnoDB, mais pas pourquoi.

Sur un coup de tête, j'ai supprimé les fichiers /var/lib/mysql/ib_logfile* et ib_binlog et j'ai réessayé; cette fois le serveur a démarré. J'ai ensuite pu mettre fin à cette tâche et exécuter service start mysql, ce qui a fonctionné.

Séparément, j'ai supprimé /var/lib/mysql/debian-5.7.flag - Je ne sais pas si cela a aidé ou aurait causé des problèmes ultérieurs si je ne l'avais pas fait.

Espérons que cet exemple aide quelqu'un; n'hésitez pas à ajouter d'autres réponses dans le même sens si vous rencontrez des problèmes différents avec ce processus.

2
M1ke

Commencez par arrêter mysql, s'il est en cours d'exécution

BACKUP=/var/tmp/broken-mysql
Sudo mkdir -p $BACKUP               # create backup dir
Sudo mv -vi /var/lib/mysql* $BACKUP # Remove any old database setup
Sudo mysql_install_db -u mysql      # Install new database
Sudo systemctl unmask mysql.service # Enables the service for systemd
Sudo service mysql start            # Start the service
0
Bibin Joseph

Après la mise à niveau de la version de MySQL, je suis également confronté à cette commande d'essai suivante

systemctl unmask mysql.service
service mysql start
0
Vimal Raj