Не удается запустить mysql.service для MySQL 5.6 в Ubuntu 16.04

После выполнения инструкций в этом посте о том, как установить MySQL 5.6 поверх существующей установки 5.7 в Ubuntu 16.04, у меня возникли многочисленные проблемы с запуском сервиса.

Сначала это произошло:

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

, который был решен путем запуска systemctl unmask mysql.service. Однако тогда я неоднократно получал это сообщение:

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

Проверка systemctl status mysql.service показала:

Failed to start LSB: Start and stop the mysql database server daemon.
3
задан 12 June 2018 в 13:09

3 ответа

Исправление для этого состояло из нескольких шагов, включая различные журналы отладки и затем следуя подсказкам в этих журналах. Я документирую их, чтобы помочь другим - ваши проблемы могут отличаться, но этот процесс должен помочь выяснить, в чем дело:

Во-первых, journalctl -xe содержит гораздо больше информации. В моем случае он содержал:

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

Это можно исправить с помощью vi /etc/apparmor.d/usr.sbin.mysqld и добавив строки для:

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

Интересным моментом является то, что ему нужна отдельная строка для каталога и подстановочные файлы внутри него - это может быть общим для некоторых приложений Unix, но не все, что может сбить вас с толку.

Как только все изменения в оборудовании были выполнены, система все равно не запустилась, и на этот раз команда journalctl -xe не принесла ничего полезного.

Затем я смог запустить sudo -u mysql mysqld, чтобы попытаться запустить демон вручную. Это показало ошибку при запуске InnoDB, но не почему.

По какой-то причине я удалил файлы /var/lib/mysql/ib_logfile* и ib_binlog и попытался снова; на этот раз сервер запустился. Затем я смог прекратить это и запустить service start mysql, который работал.

Отдельно я удалил /var/lib/mysql/debian-5.7.flag - я не уверен, помогло ли это или вызвало бы последующие проблемы, если бы я этого не сделал.

Надеюсь, этот пример кому-нибудь поможет; пожалуйста, не стесняйтесь добавлять другие ответы в той же строке, если вы столкнулись с различными проблемами в этом процессе.

2
ответ дан 12 June 2018 в 13:09

Сначала остановите mysql, если он работает

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
ответ дан 1 December 2019 в 13:11

После версии MySQL Downgrading я также сталкиваюсь с этой попыткой после команды

systemctl unmask mysql.service
service mysql start
7
ответ дан 1 December 2019 в 13:11

Другие вопросы по тегам:

Похожие вопросы: