Обновление 16.04 сломало mysql-сервер

Мое общее обновление прошло хорошо, но у меня осталась критически затянувшаяся проблема с тем, что mysql-server не может установить себя, и ничто из того, что я пытаюсь, не заставляет его работать.

Это ошибка, которую я вижу при попытке установить / переустановить его:

Setting up mysql-server-5.7 (5.7.11-0ubuntu6) ...Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.invoke-rc.d: initscript mysql, action "start" failed.dpkg: error processing package mysql-server-5.7 (--configure): subprocess installed post-installation script returned error exit status 1dpkg: dependency problems prevent configuration of mysql-server: mysql-server depends on mysql-server-5.7; however:  Package mysql-server-5.7 is not configured yet.dpkg: error processing package mysql-server (--configure): dependency problems - leaving unconfiguredNo apport report written because the error message indicates its a followup error from a previous failure.                   Processing triggers for systemd (229-4ubuntu4) ...Processing triggers for ureadahead (0.100.0-19) ...Errors were encountered while processing: mysql-server-5.7 mysql-serverE: Sub-process /usr/bin/dpkg returned an error code (1)

Я пытался полностью удалить его, хотя при этом предпринимаются попытки установить MariaDB из-за зависимостей (?). Любые предложения о том, что я могу сделать, чтобы исправить это, были бы очень кстати.

РЕДАКТИРОВАТЬ: Похоже, я не единственный: https://bugs .launchpad.net/ubuntu /+источник/mysql-5.7/+ошибка/1573279

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

Вот шаги, которые я предпринял, чтобы исправить это:

  1. Создайте резервную копию вашего my.cnf file в /etc/mysql и удалите или переименуйте его

    sudo mv /etc/mysql/my.cnf /etc/mysql/my.cnf.bak
  2. Удалите папку /etc/mysql/mysql.conf.d/ с помощью

    sudo rm -r /etc/mysql/mysql.conf.d/
  3. Убедитесь, что у вас нет my.cnf файл, спрятанный где-то в другом месте (я сделал это в своем домашнем каталоге!) или в /etc/alternatives/my.cnf использовать

    sudo find / -name my.cnf
  4. Резервное копирование и удаление /etc/mysql/debian.cnf файлы (не уверен, нужны ли они, но на всякий случай)

    sudo mv /etc/mysql/debian.cnf /etc/mysql/debian.cnf.baksudo apt purge mysql-server mysql-server-5.7 mysql-server-core-5.7sudo apt install mysql-server
  5. В случае, если ваш системный журнал выдает ошибку типа "mysqld: не удается прочитать каталог '/etc/mysql/conf.d/'", создайте символическую ссылку:

    sudo ln -s /etc/mysql/mysql.conf.d /etc/mysql/conf.d

    Тогда служба должна иметь возможность запускаться с sudo service mysql start.

Это заставило его работать!

Сегодня я столкнулся с той же проблемой, перепробовав множество решений, я обнаружил, что проблема заключалась в команде sudo systemctl disable mysql.service который я использовал для отключения автоматического запуска MySQL, поэтому, чтобы заставить его работать, я снова включил сервер MySQL с помощью команды sudo systemctl enable mysql.service и снова запустите процесс обновления, и он завершится отлично.

Ваше сообщение об ошибке содержит эту строку:

subprocess installed post-installation script returned error exit status 1

Однако это installed post-installation script не упоминается по имени. После долгих размышлений я узнал, что его название (в моем случае) /var/lib/dpkg/info/mysql-server-5.7.postinst.

Откройте этот файл с помощью sudo vi /var/lib/dpkg/info/mysql-server-5.7.postinst, или ваш предпочтительный редактор.

Вверху измените строку 3 (или около того): set -e к set -x, сохраните файл. (опция -e это "выход при ошибках", -x означает "явно показать выполненную команду", предположительно)

Бежать sudo dpkg --configure -a --log /tmp/dpkg.log(опция --log необязательна). Вы также можете просто запустить apt upgrade если вы знаете, что это будет единственный пакет, который будет обновлен.

Теперь вы получаете подробный вывод mysql-server-5.7.postinst скрипт bash, и вы сможете выяснить, что не так.

В моем случае он безуспешно пытался (повторно) запустить mysql_upgrade, но это не было необходимо для моей настроенной установки mysql. Я был конечно Я уже запускал его вручную раньше, успешно, и все было хорошо.

Поэтому я выделил строку 321 (для более старых версий mysqld попробуйте строку 281),

#mysql_upgrade --defaults-file=/etc/mysql/debian.cnf || result=$?

и команда, которая ранее терпела неудачу, sudo apt upgrade (запустите его снова), успешно завершилось, и dpkg удалил статус ошибки для этого пакета.

Теперь вы можете вернуть set -x к set -e (упоминалось выше). И при необходимости раскомментируйте строку mysql-upgrade.

Дополнительная работа может потребоваться, если вы переместили раздел данных mysql в нестандартное место. Я переместил свой из /var/lib/mysql/data на другой диск с помощью символической ссылки. Тогда вам, возможно, придется временно удалить символическую ссылку, прежде чем postinst манипулирование сценарием. Затем повторно создайте его после запуска обновления пакета.

После следующего незначительного обновления версии пакета mysqld debian эта проблема с /var/lib/dpkg/info/mysql-server-5.7.postinst сценарий может появиться снова.

Приведенные здесь инструкции исправили это на моем сервере: https://bugs.mysql.com/bug.php?id=72722

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

Сначала давайте посмотрим текущее состояние всех пакетов mysql на компьютере, используя: dpkg -l | grep mysql (Пожалуйста, вставьте выходные данные, исключая последний столбец)

Первый столбец обозначает текущее состояние пакета. Вот возможные варианты:

ii) Установленный rc) Сохраненные удаленные конфигурационные файлы (это должно быть состояние всех пакетов, которые вы удалили с помощью 'apt-get remove', которое не удаляет конфигурационные файлы в /etc)

>Чтобы это сработало, вам нужно будет запустить 'apt-get purge <pkg-name', пока вы не увидите никаких пакетов в приведенном выше списке.

Пожалуйста, помните, что некоторые пакеты, не относящиеся к серверу mysql, такие как python-mysql.connector и python-mysqldb, если они установлены, не нужно удалять, поскольку они никак не влияют на эту ситуацию, но при удалении могут вызвать проблемы с использующими их приложениями.

Мы обязательно попытаемся повторно посетить наши документы, чтобы узнать, как мы можем защитить пользователей от этой проблемы. Спасибо, что подробно поделились с нами своими отзывами.

В моем случае, с strace, я увидел, что /var/run/mysqld/ не существует, и mysqld не может создать файл mysqld.sock.

Эти команды решили мою проблему:

mkdir /var/run/mysqldchown mysql.mysql /var/run/mysqldchmod 700 /var/run/mysqld

Сейчас:

systemctl start mysql

И mysql снова работает :)

В моем случае я мог бы решить проблему, добавив

# Allow log file access/home/system/var/log/mysql.err rw,/home/system/var/log/mysql.log rw,/home/system/var/log/mysql/ r,/home/system/var/log/mysql/** rw,

к /etc/apparmor.d/local/usr.sbin.mysqld

Для получения более подробной информации взгляните на мой ответ (автор Кристофс) в stackoverflow.

Для версии WSl Ubuntu 16.04 я нашел эту полезную статью здесь

Шаги, которые необходимо предпринять для решения

  1. sudo vi /var/lib/dpkg/info/mysql-server-5.7.postinst
  2. Посмотрите на эту строку mysql_upgrade --defaults-file=/etc/mysql/debian.cnf || result=$?
  3. Добавьте это service mysql restart прямо над строкой в номере 2.
  4. Сохраните и запустите это sudo dpkg --configure -a

это должно выглядеть так

service mysql restartmysql_upgrade --defaults-file=/etc/mysql/debian.cnf || result=$?  

Надеюсь, это поможет

У меня была такая же проблема. Я несколько раз пытался переустановить mysql, но безуспешно.

Я понял, что проблема для меня заключалась в том, что другой процесс mysql уже был запущен.

В деталях:

После того, как я внимательно прочитаю, войду в систему /var/log/mysql/error.log, и обнаружил:

[ОШИБКА] Не удается запустить сервер: Привязка к порту TCP/IP: Адрес уже используется

[ОШИБКА] У вас уже есть другой сервер mysqld, работающий на порту: 3306?

Похоже, что другое приложение уже использовало этот порт.

Я проверил это с помощью ps -aux | grep 3306:

$ ps -aux | grep 3306milkovs+  6802  0.0  0.0  16336  1084 pts/19   S+   21:39   0:00 grep --color=auto 3306mysql    14706  0.0  0.3 1270192 13916 pts/2   Sl   Aug19   0:29 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --skip-grant-tables --log-error=/var/log/mysql/error.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306 --log-syslog=1 --log-syslog-facility=daemon --log-syslog-tag=

И я остановил запущенный процесс sudo kill -15 14706

Затем я запустил mysql: /etc/init.d/mysql start

Наконец-то mysql работает на меня! Я надеюсь, что это кому-нибудь поможет.

Теперь у меня возникла проблема на нескольких серверах. Исправление состояло в том, чтобы запустить и установить phpmyadmin -- переустановить

который разрешил вышеуказанное (без необходимости впоследствии прикасаться к mysql)

Ни один из ответов на этой странице не сработал для меня.

В итоге я отправился в Страница загрузки Oracle, загрузка mysql-apt-config_0.8.8-1_all.deb, и установка MySQL из репозитория Oracle:

sudo dpkg -i mysql-apt-config_0.8.8-1_all.debsudo apt updatesudo apt install mysql-server

@MarcoMarsala Я не знаю, можем ли мы сказать, что * ожидается *, что MySQL будет сломан после обновления Ubuntu с 14 до 16, хотя я полагаю, это зависит от вашей точки зрения. Для обычного пользователя, конечно, не ожидается, что обновление LTS сломает что-то вроде MySQL. Однако удивительно, что это не было обнаружено во время тестирования.

Пришлось удалить phpmyadmin, который каким-то образом вызывал проблемы с зависимостями. После переустановки все снова работает нормально.

do-release-upgrade с Ubuntu 14 до 16 выполняет неподдерживаемое обновление с MySQL 5.5 до 5.7, поэтому ожидается, что MySQL будет сломан после, как сообщается здесь: https://bugs .launchpad.net/ubuntu /+исходный код/ubuntu-release-upgrader/+ошибка/1725222

У меня такая же проблема here.

apt install phpmyadmin – переустановка
исправила вышеуказанное, после чего не нужно было прикасаться к mysql… иди разберись