MySQL не запустится - ошибка Работа для mysql.service завершилась неудачно, потому что процесс управления завершился с кодом ошибки. [dубликат]

Вы ничего не пропустили. Эти значки не являются новой по умолчанию, а новой третьей стороной тема, тема темы Faenza. Вы можете захватить их из GNOME-Look или Equinox PPA.

sudo add-apt-repository ppa:tiheum/equinox

sudo apt-get update && sudo apt-get install faenza-icon-theme

113
задан 22 April 2016 в 21:23

16 ответов

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

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

Создайте резервную копию своего my.cnf file в /etc/mysql и удалите или переименуйте его sudo mv /etc/mysql/my.cnf /etc/mysql/my.cnf.bak Удалите папку /etc/mysql/mysql.conf.d/ с помощью sudo rm -r /etc/mysql/mysql.conf.d/ Убедитесь, что у вас нет файла my.cnf, спрятанного где-то в другом месте (в моем домашнем каталоге!) или в /etc/alternatives/my.cnf используйте sudo find / -name my.cnf ] Резервное копирование и удаление файлов /etc/mysql/debian.cnf (не обязательно, если необходимо, но на всякий случай) sudo mv /etc/mysql/debian.cnf /etc/mysql/debian.cnf.bak sudo apt purge mysql-server mysql-server-5.7 mysql-server-core-5.7 sudo apt install mysql-server Если ваш syslog показывает ошибку, такую ​​как «mysqld: Невозможно прочитать dir из /etc/mysql/conf.d/» msgstr "создать символическую ссылку: sudo ln -s /etc/mysql/mysql.conf.d /etc/mysql/conf.d Затем служба должна начинать с sudo service mysql start.

Это заработало!

108
ответ дан 18 July 2018 в 10:13

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

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

Создайте резервную копию своего my.cnf file в /etc/mysql и удалите или переименуйте его sudo mv /etc/mysql/my.cnf /etc/mysql/my.cnf.bak Удалите папку /etc/mysql/mysql.conf.d/ с помощью sudo rm -r /etc/mysql/mysql.conf.d/ Убедитесь, что у вас нет файла my.cnf, спрятанного где-то в другом месте (в моем домашнем каталоге!) или в /etc/alternatives/my.cnf используйте sudo find / -name my.cnf ] Резервное копирование и удаление файлов /etc/mysql/debian.cnf (не обязательно, если необходимо, но на всякий случай) sudo mv /etc/mysql/debian.cnf /etc/mysql/debian.cnf.bak sudo apt purge mysql-server mysql-server-5.7 mysql-server-core-5.7 sudo apt install mysql-server Если ваш syslog показывает ошибку, такую ​​как «mysqld: Невозможно прочитать dir из /etc/mysql/conf.d/» msgstr "создать символическую ссылку: sudo ln -s /etc/mysql/mysql.conf.d /etc/mysql/conf.d Затем служба должна начинать с sudo service mysql start.

Это заработало!

108
ответ дан 24 July 2018 в 19:31

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

Я могу понять, как боль в вашей системе в несовместимом состоянии, но позволяет не беспокойтесь о всей ситуации и сделайте шаг за шагом, чтобы система была чистой. Сначала давайте посмотрим текущее состояние всех пакетов mysql на машине, используя: dpkg -l | grep mysql (Пожалуйста, вставьте вывод, исключая последний столбец). Первый столбец обозначает текущий статус пакета. Вот возможные варианты: ii) Установленный rc) Удаленные конфиг-файлы сохранены (это должно быть состояние всех удаленных пакетов с помощью apt-get remove, которые не удаляют конфигурационные файлы в / etc). Для этого вам нужно будет запустить apt-get purge, пока вы не увидите никаких пакетов в приведенном выше списке. Помните, что некоторые не-mysql-серверные пакеты, такие как python-mysql.connector и python-mysqldb, если они установлены, не нужно удалять, так как они не влияют на эту ситуацию, но если их удалить, это может вызвать проблемы с приложениями, использующими их. Мы обязательно попытаемся повторно посетить наши документы, чтобы узнать, как мы можем защитить пользователей от этой проблемы. Благодарим вас за то, что поделились своими отзывами с нами.
17
ответ дан 18 July 2018 в 10:13

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

# 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

. Для более подробной информации взгляните на мой ответ (by Christoph'S) в stackoverflow.

3
ответ дан 18 July 2018 в 10:13

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

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. Затем повторно заново создайте его после запуска обновления пакета.

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

17
ответ дан 18 July 2018 в 10:13

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

Эти команды решили мою проблему: [ ! d1] mkdir /var/run/mysqld chown mysql.mysql /var/run/mysqld chmod 700 /var/run/mysqld

Теперь:

systemctl start mysql

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

3
ответ дан 18 July 2018 в 10:13

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

Я понял, что проблема для меня в том, что еще один процесс mysql уже запущен.

Подробнее:

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

[ERROR] Не удается запустить сервер: привязать к порту TCP / IP: адрес уже используется [ERROR] У вас уже есть другой сервер mysqld, работающий на порту: 3306?

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

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

$ ps -aux | grep 3306 milkovs+ 6802 0.0 0.0 16336 1084 pts/19 S+ 21:39 0:00 grep --color=auto 3306 mysql 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 работает для меня! Надеюсь, это поможет кому-то.

0
ответ дан 18 July 2018 в 10:13

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

53
ответ дан 18 July 2018 в 10:13

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

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

sudo dpkg -i mysql-apt-config_0.8.8-1_all.deb sudo apt update sudo apt install mysql-server
1
ответ дан 18 July 2018 в 10:13

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

Я могу понять, как боль в вашей системе в несовместимом состоянии, но позволяет не беспокойтесь о всей ситуации и сделайте шаг за шагом, чтобы система была чистой. Сначала давайте посмотрим текущее состояние всех пакетов mysql на машине, используя: dpkg -l | grep mysql (Пожалуйста, вставьте вывод, исключая последний столбец). Первый столбец обозначает текущий статус пакета. Вот возможные варианты: ii) Установленный rc) Удаленные конфиг-файлы сохранены (это должно быть состояние всех удаленных пакетов с помощью apt-get remove, которые не удаляют конфигурационные файлы в / etc). Для этого вам нужно будет запустить apt-get purge, пока вы не увидите никаких пакетов в приведенном выше списке. Помните, что некоторые не-mysql-серверные пакеты, такие как python-mysql.connector и python-mysqldb, если они установлены, не нужно удалять, так как они не влияют на эту ситуацию, но если их удалить, это может вызвать проблемы с приложениями, использующими их. Мы обязательно попытаемся повторно посетить наши документы, чтобы узнать, как мы можем защитить пользователей от этой проблемы. Благодарим вас за то, что поделились своими отзывами с нами.
17
ответ дан 24 July 2018 в 19:31
  • 1
    Спасибо за dpkg -l | grep mysql . Это помогло понять направление. – Max Yudin 7 June 2016 в 20:47

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

# 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

. Для более подробной информации взгляните на мой ответ (by Christoph'S) в stackoverflow.

3
ответ дан 24 July 2018 в 19:31

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

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. Затем повторно заново создайте его после запуска обновления пакета.

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

17
ответ дан 24 July 2018 в 19:31
  • 1
    Я закончил чистку всего, а затем загрузил версию mysql-сервера сообщества и вручную установил здесь: dev.mysql.com/downloads/mysql – RyanNerd 1 September 2016 в 22:34
  • 2
    Точно так же случилось со мной, и ваши шаги решили это. Bur для меня мой вызов mysql_upgrade был в строке 320. Можете ли вы объяснить, почему он возвращает ненулевое значение при вызове из postinst-скрипта? – emiliopedrollo 24 September 2016 в 21:28
  • 3
    @ amiliopedrollo Нет, я не могу объяснить здесь. Но я думаю, что номер строки теперь 320, потому что недавно сторонники пакета увеличили сценарий postinstall, я наблюдал то же самое на днях, во время последнего запуска программы обновления (включая новый mysql-deb-пакет) , – knb 24 September 2016 в 22:25
  • 4
    Благодаря! С помощью set -e я смог решить точную проблему - у MySQL не было доступа для пользователя системы ubuntu, указанного в /etc/mysql/debian.cnf . Поэтому я добавил этого пользователя в MySQL и предоставил привилегии, снова запустил dpkg, и он сработал! – Allen Hamilton 24 April 2017 в 08:17

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

Эти команды решили мою проблему: [ ! d1] mkdir /var/run/mysqld chown mysql.mysql /var/run/mysqld chmod 700 /var/run/mysqld

Теперь:

systemctl start mysql

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

3
ответ дан 24 July 2018 в 19:31
  • 1
    Я предлагаю вам добавить эти строки в / usr / share / mysql / mysql-systemd-start, начиная с строки 25, после этого вам не придется воссоздавать этот каталог после каждой перезагрузки (извините, что строка не работает в этом комментарии) : если [ ! -d / run / msyqld]; то mkdir -p -m0755 / run / mysqld || {echo & quot; Невозможно создать / запустить / mysqld & quot ;; выход 1; } chown mysql: mysql / run / mysqld || {echo & quot; Невозможно выполнить chown / run / mysqld & quot ;; выход 1; } fi – scoobydoo 30 June 2016 в 17:44

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

Я понял, что проблема для меня в том, что еще один процесс mysql уже запущен.

Подробнее:

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

[ERROR] Не удается запустить сервер: привязать к порту TCP / IP: адрес уже используется [ERROR] У вас уже есть другой сервер mysqld, работающий на порту: 3306?

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

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

$ ps -aux | grep 3306 milkovs+ 6802 0.0 0.0 16336 1084 pts/19 S+ 21:39 0:00 grep --color=auto 3306 mysql 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 работает для меня! Надеюсь, это поможет кому-то.

0
ответ дан 24 July 2018 в 19:31

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

52
ответ дан 24 July 2018 в 19:31
  • 1
    Я столкнулся с этой проблемой, и то же самое исправление сработало для меня. – Allen 26 April 2016 в 18:13
  • 2
    Работал для меня. Каждое решение здесь, mysql, работало после этого. – Błażej Michalik 29 April 2016 в 17:51
  • 3
    То же самое здесь - это должен быть главный пост. – a1phanumeric 15 September 2016 в 17:32
  • 4
    Работал и для меня! Огромное спасибо. Чтобы быть явным, запустите: sudo systemctl enable mysql.service и после этого запустите sudo apt install -f. – Fernando Paladini 25 January 2017 в 04:03
  • 5
    Это все, что я должен был сделать. Я отключил автозапуск, как описано @naruto. Я включил автозапуск и выполнил «sudo apt upgrade». Теперь исправлено. Должен быть верный ответ. Это гораздо более простое, более стандартное и менее проблемное решение. – Jack Holt 7 August 2017 в 19:00

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

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

sudo dpkg -i mysql-apt-config_0.8.8-1_all.deb sudo apt update sudo apt install mysql-server
1
ответ дан 24 July 2018 в 19:31
  • 1
    isntall - & gt; install опечатка. Глупый СО не позволяет мне исправить один символ. – Csaba Toth 11 July 2018 в 19:54
  • 2
    @CsabaToth исправлено, спасибо! – ostrokach 11 July 2018 в 21:10

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

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